mirror of
https://github.com/kanaka/mal.git
synced 2024-09-19 09:38:28 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
28 lines
802 B
Swift
28 lines
802 B
Swift
//******************************************************************************
|
|
// MAL - printer
|
|
//******************************************************************************
|
|
|
|
import Foundation
|
|
|
|
var MalValPrintReadably = true
|
|
|
|
func with_print_readably<T>(print_readably: Bool, fn: () -> T) -> T {
|
|
let old = MalValPrintReadably
|
|
MalValPrintReadably = print_readably
|
|
let result = fn()
|
|
MalValPrintReadably = old
|
|
return result
|
|
}
|
|
|
|
func pr_str(m: MalVal, _ print_readably: Bool = MalValPrintReadably) -> String {
|
|
return with_print_readably(print_readably) {
|
|
if is_string(m) {
|
|
return print_readably ? escape(m.description) : m.description
|
|
}
|
|
if is_keyword(m) {
|
|
return ":\(m.description)"
|
|
}
|
|
return m.description
|
|
}
|
|
}
|