| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,7 +2,9 @@ | |||
| 2 | 2 | from six import with_metaclass, viewkeys | |
| 3 | 3 | ||
| 4 | 4 | import types | |
| 5 | + | ||
| 5 | 6 | from collections import OrderedDict | |
| 7 | + from sys import version_info | ||
| 6 | 8 | ||
| 7 | 9 | from . import _inputstream | |
| 8 | 10 | from . import _tokenizer | |
@@ -24,6 +26,12 @@ | |||
| 24 | 26 | ) | |
| 25 | 27 | ||
| 26 | 28 | ||
| 29 | + if version_info >= (3, 7): | ||
| 30 | + attributeMap = dict | ||
| 31 | + else: | ||
| 32 | + attributeMap = OrderedDict | ||
| 33 | + | ||
| 34 | + | ||
| 27 | 35 | def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs): | |
| 28 | 36 | """Parse an HTML document as a string or file-like object into a tree | |
| 29 | 37 | ||
@@ -329,10 +337,11 @@ def normalizeToken(self, token): | |||
| 329 | 337 | # HTML5 specific normalizations to the token stream | |
| 330 | 338 | if token["type"] == tokenTypes["StartTag"]: | |
| 331 | 339 | raw = token["data"] | |
| 332 | - token["data"] = OrderedDict(raw) | ||
| 333 | - if len(raw) > len(token["data"]): | ||
| 340 | + data = attributeMap(raw) | ||
| 341 | + if len(raw) > len(data): | ||
| 334 | 342 | # we had some duplicated attribute, fix so first wins | |
| 335 | - token["data"].update(raw[::-1]) | ||
| 343 | + data.update(raw[::-1]) | ||
| 344 | + token["data"] = data | ||
| 336 | 345 | ||
| 337 | 346 | return token | |
| 338 | 347 | ||
@@ -2770,8 +2779,8 @@ def processEndTag(self, token): | |||
| 2770 | 2779 | def adjust_attributes(token, replacements): | |
| 2771 | 2780 | needs_adjustment = viewkeys(token['data']) & viewkeys(replacements) | |
| 2772 | 2781 | if needs_adjustment: | |
| 2773 | - token['data'] = OrderedDict((replacements.get(k, k), v) | ||
| 2774 | - for k, v in token['data'].items()) | ||
| 2782 | + token['data'] = attributeMap((replacements.get(k, k), v) | ||
| 2783 | + for k, v in token['data'].items()) | ||
| 2775 | 2784 | ||
| 2776 | 2785 | ||
| 2777 | 2786 | def impliedTagToken(name, type="EndTag", attributes=None, | |
| Back | FazBrowse Home | New Git URL |
0 commit comments