Swift*: add seq/string?. swift: gensym/or macro fix
[jackhill/mal.git] / swift / printer.swift
CommitLineData
2539e6af
KR
1//******************************************************************************
2// MAL - printer
3//******************************************************************************
4
5import Foundation
6
425305df
KR
7var MalValPrintReadably = true
8
2539e6af
KR
9func with_print_readably<T>(print_readably: Bool, fn: () -> T) -> T {
10 let old = MalValPrintReadably
11 MalValPrintReadably = print_readably
12 let result = fn()
13 MalValPrintReadably = old
14 return result
15}
16
425305df 17func pr_str(m: MalVal, _ print_readably: Bool = MalValPrintReadably) -> String {
2539e6af 18 return with_print_readably(print_readably) {
425305df
KR
19 if is_string(m) {
20 return print_readably ? escape(m.description) : m.description
21 }
22 if is_keyword(m) {
23 return ":\(m.description)"
24 }
25 return m.description
2539e6af
KR
26 }
27}