2 IS_RPYTHON
= sys
.argv
[0].endswith('rpython')
5 from rpython
.rlib
.rsre
import rsre_re
as re
9 import mal_types
as types
10 from mal_types
import (MalType
, MalStr
, MalSym
, MalInt
)
12 def _pr_str(obj
, print_readably
=True):
13 assert isinstance(obj
, MalType
)
15 if types
._list
_Q
(obj
):
16 #return "(" + " ".join(map(lambda e: _pr_str(e,_r), obj.values)) + ")"
19 res
.append(_pr_str(e
,_r
))
20 return u
"(" + u
" ".join(res
) + u
")"
21 ## elif types._vector_Q(obj):
22 ## return "[" + " ".join(map(lambda e: _pr_str(e,_r), obj)) + "]"
23 ## elif types._hash_map_Q(obj):
25 ## for k in obj.keys():
26 ## ret.extend((_pr_str(k), _pr_str(obj[k],_r)))
27 ## return "{" + " ".join(ret) + "}"
28 elif types
._string
_Q
(obj
):
29 assert isinstance(obj
, MalStr
)
31 if len(val
) > 0 and val
[0] == u
'\u029e':
34 return u
'"' + types
._replace
(u
'\\n', u
'\\n',
35 types
._replace
(u
'\"', u
'\\"',
36 types
._replace
(u
'\\\\', u
'\\\\', val
))) + u
'"'
39 elif types
._nil
_Q
(obj
):
41 elif types
._true
_Q
(obj
):
43 elif types
._false
_Q
(obj
):
45 ## elif types._atom_Q(obj):
46 ## return "(atom " + _pr_str(obj.val,_r) + ")"
47 elif types
._symbol
_Q
(obj
):
48 assert isinstance(obj
, MalSym
)
50 elif types
._int
_Q
(obj
):
51 assert isinstance(obj
, MalInt
)
52 return unicode(str(obj
.value
))