@@ -31,11 +31,6 @@ def to_text(s, blank_if_none=True):
3131return text_type (s )
3232
3333
34- def is_text_or_none (string ):
35- """Wrapper around isinstance(string_types) or is None"""
36- return string is None or isinstance (string ,string_types )
37-
38-
3934class TreeWalker (object ):
4035def __init__ (self ,tree ):
4136self .tree = tree
@@ -47,27 +42,13 @@ def error(self, msg):
4742return {"type" :"SerializeError" ,"data" :msg }
4843
4944def emptyTag (self ,namespace ,name ,attrs ,hasChildren = False ):
50- assert namespace is None or isinstance (namespace ,string_types ),type (namespace )
51- assert isinstance (name ,string_types ),type (name )
52- assert all ((namespace is None or isinstance (namespace ,string_types ))and
53- isinstance (name ,string_types )and
54- isinstance (value ,string_types )
55- for (namespace ,name ),value in attrs .items ())
56-
5745yield {"type" :"EmptyTag" ,"name" :to_text (name ,False ),
5846"namespace" :to_text (namespace ),
5947"data" :attrs }
6048if hasChildren :
6149yield self .error ("Void element has children" )
6250
6351def startTag (self ,namespace ,name ,attrs ):
64- assert namespace is None or isinstance (namespace ,string_types ),type (namespace )
65- assert isinstance (name ,string_types ),type (name )
66- assert all ((namespace is None or isinstance (namespace ,string_types ))and
67- isinstance (name ,string_types )and
68- isinstance (value ,string_types )
69- for (namespace ,name ),value in attrs .items ())
70-
7152return {"type" :"StartTag" ,
7253"name" :text_type (name ),
7354"namespace" :to_text (namespace ),
@@ -76,17 +57,12 @@ def startTag(self, namespace, name, attrs):
7657for (namespace ,name ),value in attrs .items ())}
7758
7859def endTag (self ,namespace ,name ):
79- assert namespace is None or isinstance (namespace ,string_types ),type (namespace )
80- assert isinstance (name ,string_types ),type (namespace )
81-
8260return {"type" :"EndTag" ,
8361"name" :to_text (name ,False ),
8462"namespace" :to_text (namespace ),
8563"data" : {}}
8664
8765def text (self ,data ):
88- assert isinstance (data ,string_types ),type (data )
89-
9066data = to_text (data )
9167middle = data .lstrip (spaceCharacters )
9268left = data [:len (data )- len (middle )]
@@ -101,24 +77,16 @@ def text(self, data):
10177yield {"type" :"SpaceCharacters" ,"data" :right }
10278
10379def comment (self ,data ):
104- assert isinstance (data ,string_types ),type (data )
105-
10680return {"type" :"Comment" ,"data" :text_type (data )}
10781
10882def doctype (self ,name ,publicId = None ,systemId = None ,correct = True ):
109- assert is_text_or_none (name ),type (name )
110- assert is_text_or_none (publicId ),type (publicId )
111- assert is_text_or_none (systemId ),type (systemId )
112-
11383return {"type" :"Doctype" ,
11484"name" :to_text (name ),
11585"publicId" :to_text (publicId ),
11686"systemId" :to_text (systemId ),
11787"correct" :to_text (correct )}
11888
11989def entity (self ,name ):
120- assert isinstance (name ,string_types ),type (name )
121-
12290return {"type" :"Entity" ,"name" :text_type (name )}
12391
12492def unknown (self ,nodeType ):