1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-19 09:38:28 +03:00
mal/impls/swift/printer.swift
Joel Martin 8a19f60386 Move implementations into impls/ dir
- 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.
2020-02-10 23:50:16 -06:00

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
}
}