blob: ef067a5ac00c37d0961e59adb23a42aca041682a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
require_relative "types"
def _pr_str(obj, print_readably=true)
_r = print_readably
return case obj
when List
"(" + obj.map{|x| _pr_str(x, _r)}.join(" ") + ")"
when Vector
"[" + obj.map{|x| _pr_str(x, _r)}.join(" ") + "]"
when Hash
ret = []
obj.each{|k,v| ret.push(_pr_str(k,_r), _pr_str(v,_r))}
"{" + ret.join(" ") + "}"
when String
if obj[0] == "\u029e"
":" + obj[1..-1]
elsif _r
obj.inspect # escape special characters
else
obj
end
when Atom
"(atom " + _pr_str(obj.val, true) + ")"
when nil
"nil"
else
obj.to_s
end
end
|