|
2 | 2 | fromsiximportwith_metaclass |
3 | 3 |
|
4 | 4 | importtypes |
| 5 | +fromcollectionsimportOrderedDict |
5 | 6 |
|
6 | 7 | from .importinputstream |
7 | 8 | from .importtokenizer |
|
17 | 18 | namespaces, |
18 | 19 | htmlIntegrationPointElements,mathmlTextIntegrationPointElements, |
19 | 20 | adjustForeignAttributesasadjustForeignAttributesMap, |
| 21 | +adjustMathMLAttributes,adjustSVGAttributes, |
20 | 22 | E, |
21 | 23 | ReparseException |
22 | 24 | ) |
@@ -273,96 +275,18 @@ def normalizeToken(self, token): |
273 | 275 | """ HTML5 specific normalizations to the token stream """ |
274 | 276 |
|
275 | 277 | iftoken["type"]==tokenTypes["StartTag"]: |
276 | | -token["data"]=dict(token["data"][::-1]) |
| 278 | +token["data"]=OrderedDict(token['data']) |
277 | 279 |
|
278 | 280 | returntoken |
279 | 281 |
|
280 | 282 | defadjustMathMLAttributes(self,token): |
281 | | -replacements= {"definitionurl":"definitionURL"} |
282 | | -fork,vinreplacements.items(): |
283 | | -ifkintoken["data"]: |
284 | | -token["data"][v]=token["data"][k] |
285 | | -deltoken["data"][k] |
| 283 | +adjust_attributes(token,adjustMathMLAttributes) |
286 | 284 |
|
287 | 285 | defadjustSVGAttributes(self,token): |
288 | | -replacements= { |
289 | | -"attributename":"attributeName", |
290 | | -"attributetype":"attributeType", |
291 | | -"basefrequency":"baseFrequency", |
292 | | -"baseprofile":"baseProfile", |
293 | | -"calcmode":"calcMode", |
294 | | -"clippathunits":"clipPathUnits", |
295 | | -"contentscripttype":"contentScriptType", |
296 | | -"contentstyletype":"contentStyleType", |
297 | | -"diffuseconstant":"diffuseConstant", |
298 | | -"edgemode":"edgeMode", |
299 | | -"externalresourcesrequired":"externalResourcesRequired", |
300 | | -"filterres":"filterRes", |
301 | | -"filterunits":"filterUnits", |
302 | | -"glyphref":"glyphRef", |
303 | | -"gradienttransform":"gradientTransform", |
304 | | -"gradientunits":"gradientUnits", |
305 | | -"kernelmatrix":"kernelMatrix", |
306 | | -"kernelunitlength":"kernelUnitLength", |
307 | | -"keypoints":"keyPoints", |
308 | | -"keysplines":"keySplines", |
309 | | -"keytimes":"keyTimes", |
310 | | -"lengthadjust":"lengthAdjust", |
311 | | -"limitingconeangle":"limitingConeAngle", |
312 | | -"markerheight":"markerHeight", |
313 | | -"markerunits":"markerUnits", |
314 | | -"markerwidth":"markerWidth", |
315 | | -"maskcontentunits":"maskContentUnits", |
316 | | -"maskunits":"maskUnits", |
317 | | -"numoctaves":"numOctaves", |
318 | | -"pathlength":"pathLength", |
319 | | -"patterncontentunits":"patternContentUnits", |
320 | | -"patterntransform":"patternTransform", |
321 | | -"patternunits":"patternUnits", |
322 | | -"pointsatx":"pointsAtX", |
323 | | -"pointsaty":"pointsAtY", |
324 | | -"pointsatz":"pointsAtZ", |
325 | | -"preservealpha":"preserveAlpha", |
326 | | -"preserveaspectratio":"preserveAspectRatio", |
327 | | -"primitiveunits":"primitiveUnits", |
328 | | -"refx":"refX", |
329 | | -"refy":"refY", |
330 | | -"repeatcount":"repeatCount", |
331 | | -"repeatdur":"repeatDur", |
332 | | -"requiredextensions":"requiredExtensions", |
333 | | -"requiredfeatures":"requiredFeatures", |
334 | | -"specularconstant":"specularConstant", |
335 | | -"specularexponent":"specularExponent", |
336 | | -"spreadmethod":"spreadMethod", |
337 | | -"startoffset":"startOffset", |
338 | | -"stddeviation":"stdDeviation", |
339 | | -"stitchtiles":"stitchTiles", |
340 | | -"surfacescale":"surfaceScale", |
341 | | -"systemlanguage":"systemLanguage", |
342 | | -"tablevalues":"tableValues", |
343 | | -"targetx":"targetX", |
344 | | -"targety":"targetY", |
345 | | -"textlength":"textLength", |
346 | | -"viewbox":"viewBox", |
347 | | -"viewtarget":"viewTarget", |
348 | | -"xchannelselector":"xChannelSelector", |
349 | | -"ychannelselector":"yChannelSelector", |
350 | | -"zoomandpan":"zoomAndPan" |
351 | | - } |
352 | | -fororiginalNameinlist(token["data"].keys()): |
353 | | -iforiginalNameinreplacements: |
354 | | -svgName=replacements[originalName] |
355 | | -token["data"][svgName]=token["data"][originalName] |
356 | | -deltoken["data"][originalName] |
| 286 | +adjust_attributes(token,adjustSVGAttributes) |
357 | 287 |
|
358 | 288 | defadjustForeignAttributes(self,token): |
359 | | -replacements=adjustForeignAttributesMap |
360 | | - |
361 | | -fororiginalNameintoken["data"].keys(): |
362 | | -iforiginalNameinreplacements: |
363 | | -foreignName=replacements[originalName] |
364 | | -token["data"][foreignName]=token["data"][originalName] |
365 | | -deltoken["data"][originalName] |
| 289 | +adjust_attributes(token,adjustForeignAttributesMap) |
366 | 290 |
|
367 | 291 | defreparseTokenNormal(self,token): |
368 | 292 | # pylint:disable=unused-argument |
@@ -2791,6 +2715,12 @@ def processEndTag(self, token): |
2791 | 2715 | } |
2792 | 2716 |
|
2793 | 2717 |
|
| 2718 | +defadjust_attributes(token,replacements): |
| 2719 | +iffrozenset(token['data'])&frozenset(replacements): |
| 2720 | +token['data']=OrderedDict( |
| 2721 | + (replacements.get(k,k),v)fork,vintoken['data'].iteritems()) |
| 2722 | + |
| 2723 | + |
2794 | 2724 | defimpliedTagToken(name,type="EndTag",attributes=None, |
2795 | 2725 | selfClosing=False): |
2796 | 2726 | ifattributesisNone: |
|