@@ -35,7 +35,28 @@ def load(f):
3535#Run the serialize error checks
3636checkSerializeErrors = False
3737
38- class TestCase (unittest .TestCase , TreeWalker ):
38+ class JsonWalker (TreeWalker ):
39+ def __iter__ (self ):
40+ for token in self .tree :
41+ type = token [0 ]
42+ if type == "StartTag" :
43+ yield self .startTag (token [1 ], token [2 ])
44+ elif type == "EndTag" :
45+ yield self .endTag (token [1 ])
46+ elif type == "EmptyTag" :
47+ for token in self .emptyTag (token [1 ], token [2 ]):
48+ yield token
49+ elif type == "Comment" :
50+ yield self .comment (token [1 ])
51+ elif type in ("Characters" , "SpaceCharacters" ):
52+ for token in self .text (token [1 ]):
53+ yield token
54+ elif type == "Doctype" :
55+ yield self .doctype (token [1 ])
56+ else :
57+ raise ValueError ("Unknown token type: " + type )
58+
59+ class TestCase (unittest .TestCase ):
3960 def addTest (cls , name , expected , input , description , options ):
4061 func = lambda self : self .mockTest (expected , input , options )
4162 func .__doc__ = "\t " .join ([description , str (input ), str (options )])
@@ -54,27 +75,7 @@ def mockTest(self, expected, input, options):
5475 def serialize_html (self , input , options ):
5576 return u'' .join (serializer .HTMLSerializer ( \
5677 ** dict ([(str (k ),v ) for k ,v in options .iteritems ()])).
57- serialize (self .normalizeTokens (input )))
58-
59- def normalizeTokens (self , tokens ):
60- for token in tokens :
61- type = token [0 ]
62- if type == "StartTag" :
63- yield self .startTag (token [1 ], token [2 ])
64- elif type == "EndTag" :
65- yield self .endTag (token [1 ])
66- elif type == "EmptyTag" :
67- for token in self .emptyTag (token [1 ], token [2 ]):
68- yield token
69- elif type == "Comment" :
70- yield self .comment (token [1 ])
71- elif type in ("Characters" , "SpaceCharacters" ):
72- for token in self .text (token [1 ]):
73- yield token
74- elif type == "Doctype" :
75- yield self .doctype (token [1 ])
76- else :
77- raise ValueError ("Unknown token type: " + type )
78+ serialize (JsonWalker (input )))
7879
7980def test_serializer ():
8081 for filename in glob .glob ('serializer/*.test' ):
0 commit comments