@@ -65,14 +65,14 @@ def _BOOLEAN(self, v):
6565 else :
6666 return b'<boolean>false</boolean>'
6767 def _INTEGER (self , v ):
68- return b'<integer>' + _str_to_bytes ( str (v )) + b'</integer>'
68+ return b'<integer>' + str (v ). encode ( ) + b'</integer>'
6969 def _REAL (self , v ):
70- return b'<real>' + _str_to_bytes ( str (v )) + b'</real>'
70+ return b'<real>' + str (v ). encode ( ) + b'</real>'
7171 def _UUID (self , v ):
7272 if v .int == 0 :
7373 return b'<uuid/>'
7474 else :
75- return b'<uuid>' + _str_to_bytes ( str (v )) + b'</uuid>'
75+ return b'<uuid>' + str (v ). encode ( ) + b'</uuid>'
7676 def _BINARY (self , v ):
7777 return b'<binary>' + base64 .b64encode (v ).strip () + b'</binary>'
7878 def _STRING (self , v ):
@@ -95,14 +95,14 @@ def _write(self, something):
9595 self .stream .write (b'<?xml version="1.0" ?>'
9696 b'<llsd>' )
9797
98- iter_stack = [(iter ([something ]), b"" )]
98+ iter_stack = [(iter ([something ]), b"" , None )]
9999 while True :
100- cur_iter , iter_type = iter_stack [- 1 ]
100+ cur_iter , iter_type , iterable = iter_stack [- 1 ]
101101 try :
102102 item = next (cur_iter )
103103 if iter_type == b"map" :
104- self .stream .write (b'<key>' + _str_to_bytes ( self .xml_esc (UnicodeType (item [ 0 ]) )) + b'</key>' )
105- item = item [ 1 ]
104+ self .stream .write (b'<key>' + self .xml_esc (UnicodeType (item )) + b'</key>' )
105+ item = iterable [ item ]
106106 if isinstance (item , _LLSD ):
107107 item = item .thing
108108 t = type (item )
@@ -113,10 +113,10 @@ def _write(self, something):
113113
114114 if tf == self ._MAP :
115115 self .stream .write (b'<map>' )
116- iter_stack .append ((iter (item . items ( )), b"map" ))
116+ iter_stack .append ((iter (list ( item )), b"map" , item ))
117117 elif tf == self ._ARRAY :
118118 self .stream .write (b'<array>' )
119- iter_stack .append ((iter (item ), b"array" ))
119+ iter_stack .append ((iter (item ), b"array" , None ))
120120 else :
121121 self .stream .write (tf (item ))
122122 except StopIteration :
0 commit comments