11from __future__ import absolute_import , division , unicode_literals
2- from six import text_type , string_types
32
43from xml .dom import Node
54from ..constants import namespaces , voidElements , spaceCharacters
1817spaceCharacters = "" .join (spaceCharacters )
1918
2019
21- def to_text (s , blank_if_none = True ):
22- """Wrapper around six.text_type to convert None to empty string"""
23- if s is None :
24- if blank_if_none :
25- return ""
26- else :
27- return None
28- elif isinstance (s , text_type ):
29- return s
30- else :
31- return text_type (s )
32-
33-
3420class TreeWalker (object ):
3521 def __init__ (self , tree ):
3622 self .tree = tree
@@ -42,28 +28,26 @@ def error(self, msg):
4228 return {"type" : "SerializeError" , "data" : msg }
4329
4430 def emptyTag (self , namespace , name , attrs , hasChildren = False ):
45- yield {"type" : "EmptyTag" , "name" : to_text ( name , False ) ,
46- "namespace" : to_text ( namespace ) ,
31+ yield {"type" : "EmptyTag" , "name" : name ,
32+ "namespace" : namespace ,
4733 "data" : attrs }
4834 if hasChildren :
4935 yield self .error ("Void element has children" )
5036
5137 def startTag (self , namespace , name , attrs ):
5238 return {"type" : "StartTag" ,
53- "name" : text_type (name ),
54- "namespace" : to_text (namespace ),
55- "data" : dict (((to_text (namespace , False ), to_text (name )),
56- to_text (value , False ))
57- for (namespace , name ), value in attrs .items ())}
39+ "name" : name ,
40+ "namespace" : namespace ,
41+ "data" : attrs }
5842
5943 def endTag (self , namespace , name ):
6044 return {"type" : "EndTag" ,
61- "name" : to_text ( name , False ) ,
62- "namespace" : to_text ( namespace ) ,
45+ "name" : name ,
46+ "namespace" : namespace ,
6347 "data" : {}}
6448
6549 def text (self , data ):
66- data = to_text ( data )
50+ data = data
6751 middle = data .lstrip (spaceCharacters )
6852 left = data [:len (data ) - len (middle )]
6953 if left :
@@ -77,17 +61,17 @@ def text(self, data):
7761 yield {"type" : "SpaceCharacters" , "data" : right }
7862
7963 def comment (self , data ):
80- return {"type" : "Comment" , "data" : text_type ( data ) }
64+ return {"type" : "Comment" , "data" : data }
8165
8266 def doctype (self , name , publicId = None , systemId = None , correct = True ):
8367 return {"type" : "Doctype" ,
84- "name" : to_text ( name ) ,
85- "publicId" : to_text ( publicId ) ,
86- "systemId" : to_text ( systemId ) ,
87- "correct" : to_text ( correct ) }
68+ "name" : name ,
69+ "publicId" : publicId ,
70+ "systemId" : systemId ,
71+ "correct" : correct }
8872
8973 def entity (self , name ):
90- return {"type" : "Entity" , "name" : text_type ( name ) }
74+ return {"type" : "Entity" , "name" : name }
9175
9276 def unknown (self , nodeType ):
9377 return self .error ("Unknown node type: " + nodeType )
0 commit comments