@@ -305,21 +305,6 @@ def invoke(self, rdr, ch):
305305 return cons (symbol (u"quote" ), cons (itm ))
306306
307307class 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-
323308 def fqd (self , itm ):
324309 ns_alias = rt .namespace (itm )
325310 current_nms = rt .ns .deref ()
@@ -333,11 +318,11 @@ def fqd(self, itm):
333318 def invoke (self , rdr , ch ):
334319 ch = rdr .read ()
335320 if ch == u":" :
336- itm = self .read (rdr )
321+ ch = rdr .read ()
322+ itm = read_symbol (rdr , ch , False )
337323 return self .fqd (itm )
338324 else :
339- rdr .unread ()
340- itm = self .read (rdr )
325+ itm = read_symbol (rdr , ch , False )
341326
342327 return keyword (rt .name (itm ), rt .namespace (itm ))
343328
@@ -754,7 +739,7 @@ def read_number(rdr, ch):
754739 return parsed
755740 return Symbol (joined )
756741
757- def read_symbol (rdr , ch ):
742+ def read_symbol (rdr , ch , convert_primitives = True ):
758743 acc = [ch ]
759744 try :
760745 while True :
@@ -767,12 +752,14 @@ def read_symbol(rdr, ch):
767752 pass
768753
769754 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
776763 return symbol (sym_str )
777764
778765class EOF (object .Object ):
0 commit comments