@@ -305,21 +305,6 @@ def invoke(self, rdr, ch):
305
305
return cons (symbol (u"quote" ), cons (itm ))
306
306
307
307
class KeywordReader (ReaderHandler ):
308
- def read (self , rdr ):
309
- acc = []
310
-
311
- try :
312
- while True :
313
- ch = rdr .read ()
314
- if is_whitespace (ch ) or is_terminating_macro (ch ):
315
- rdr .unread ()
316
- break
317
- acc .append (ch )
318
- except EOFError :
319
- pass
320
- sym_str = u"" .join (acc )
321
- return symbol (sym_str )
322
-
323
308
def fqd (self , itm ):
324
309
ns_alias = rt .namespace (itm )
325
310
current_nms = rt .ns .deref ()
@@ -333,11 +318,11 @@ def fqd(self, itm):
333
318
def invoke (self , rdr , ch ):
334
319
ch = rdr .read ()
335
320
if ch == u":" :
336
- itm = self .read (rdr )
321
+ ch = rdr .read ()
322
+ itm = read_symbol (rdr , ch , False )
337
323
return self .fqd (itm )
338
324
else :
339
- rdr .unread ()
340
- itm = self .read (rdr )
325
+ itm = read_symbol (rdr , ch , False )
341
326
342
327
return keyword (rt .name (itm ), rt .namespace (itm ))
343
328
@@ -754,7 +739,7 @@ def read_number(rdr, ch):
754
739
return parsed
755
740
return Symbol (joined )
756
741
757
- def read_symbol (rdr , ch ):
742
+ def read_symbol (rdr , ch , convert_primitives = True ):
758
743
acc = [ch ]
759
744
try :
760
745
while True :
@@ -767,12 +752,14 @@ def read_symbol(rdr, ch):
767
752
pass
768
753
769
754
sym_str = u"" .join (acc )
770
- if sym_str == u"true" :
771
- return true
772
- if sym_str == u"false" :
773
- return false
774
- if sym_str == u"nil" :
775
- return nil
755
+
756
+ if convert_primitives :
757
+ if sym_str == u"true" :
758
+ return true
759
+ if sym_str == u"false" :
760
+ return false
761
+ if sym_str == u"nil" :
762
+ return nil
776
763
return symbol (sym_str )
777
764
778
765
class EOF (object .Object ):
0 commit comments