Commit | Line | Data |
---|---|---|
2539e6af KR |
1 | //****************************************************************************** |
2 | // MAL - printer | |
3 | //****************************************************************************** | |
4 | ||
5 | import Foundation | |
6 | ||
425305df KR |
7 | var MalValPrintReadably = true |
8 | ||
2539e6af KR |
9 | func 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 | 17 | func 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 | } |