@@ -139,83 +139,6 @@ def GenshiAdapter(tree):
139139"adapter" :GenshiAdapter ,
140140"walker" :treewalkers .getTreeWalker ("genshi" )}
141141
142-
143- def concatenateCharacterTokens (tokens ):
144- charactersToken = None
145- for token in tokens :
146- type = token ["type" ]
147- if type in ("Characters" ,"SpaceCharacters" ):
148- if charactersToken is None :
149- charactersToken = {"type" :"Characters" ,"data" :token ["data" ]}
150- else :
151- charactersToken ["data" ]+= token ["data" ]
152- else :
153- if charactersToken is not None :
154- yield charactersToken
155- charactersToken = None
156- yield token
157- if charactersToken is not None :
158- yield charactersToken
159-
160-
161- def convertTokens (tokens ):
162- output = []
163- indent = 0
164- for token in concatenateCharacterTokens (tokens ):
165- type = token ["type" ]
166- if type in ("StartTag" ,"EmptyTag" ):
167- if (token ["namespace" ]and
168- token ["namespace" ]!= constants .namespaces ["html" ]):
169- if token ["namespace" ]in constants .prefixes :
170- name = constants .prefixes [token ["namespace" ]]
171- else :
172- name = token ["namespace" ]
173- name += " " + token ["name" ]
174- else :
175- name = token ["name" ]
176- output .append ("%s<%s>" % (" " * indent ,name ))
177- indent += 2
178- attrs = token ["data" ]
179- if attrs :
180- # TODO: Remove this if statement, attrs should always exist
181- for (namespace ,name ),value in sorted (attrs .items ()):
182- if namespace :
183- if namespace in constants .prefixes :
184- outputname = constants .prefixes [namespace ]
185- else :
186- outputname = namespace
187- outputname += " " + name
188- else :
189- outputname = name
190- output .append ("%s%s=\" %s\" " % (" " * indent ,outputname ,value ))
191- if type == "EmptyTag" :
192- indent -= 2
193- elif type == "EndTag" :
194- indent -= 2
195- elif type == "Comment" :
196- output .append ("%s<!-- %s -->" % (" " * indent ,token ["data" ]))
197- elif type == "Doctype" :
198- if token ["name" ]:
199- if token ["publicId" ]:
200- output .append ("""%s<!DOCTYPE %s "%s" "%s">""" %
201- (" " * indent ,token ["name" ],
202- token ["publicId" ],
203- token ["systemId" ]and token ["systemId" ]or "" ))
204- elif token ["systemId" ]:
205- output .append ("""%s<!DOCTYPE %s "" "%s">""" %
206- (" " * indent ,token ["name" ],
207- token ["systemId" ]))
208- else :
209- output .append ("%s<!DOCTYPE %s>" % (" " * indent ,
210- token ["name" ]))
211- else :
212- output .append ("%s<!DOCTYPE >" % (" " * indent ,))
213- elif type in ("Characters" ,"SpaceCharacters" ):
214- output .append ("%s\" %s\" " % (" " * indent ,token ["data" ]))
215- else :
216- pass # TODO: what to do with errors?
217- return "\n " .join (output )
218-
219142import re
220143attrlist = re .compile (r"^(\s+)\w+=.*(\n\1\w+=.*)+" ,re .M )
221144
@@ -265,7 +188,7 @@ def runTreewalkerTest(innerHTML, input, expected, errors, treeClass):
265188
266189document = treeClass .get ("adapter" ,lambda x :x )(document )
267190try :
268- output = convertTokens (treeClass ["walker" ](document ))
191+ output = treewalkers . pprint (treeClass ["walker" ](document ))
269192output = attrlist .sub (sortattrs ,output )
270193expected = attrlist .sub (sortattrs ,convertExpected (expected ))
271194diff = "" .join (unified_diff ([line + "\n " for line in expected .splitlines ()],
@@ -323,7 +246,7 @@ def runTreewalkerEditTest(intext, expected, attrs_to_add, tree):
323246set_attribute_on_first_child (document ,nom ,val ,treeName )
324247
325248document = treeClass .get ("adapter" ,lambda x :x )(document )
326- output = convertTokens (treeClass ["walker" ](document ))
249+ output = treewalkers . pprint (treeClass ["walker" ](document ))
327250output = attrlist .sub (sortattrs ,output )
328251if not output in expected :
329252raise AssertionError ("TreewalkerEditTest: %s\n Expected:\n %s\n Received:\n %s" % (treeName ,expected ,output ))