|
13 | 13 |
|
14 | 14 | from .support import get_data_files, TestData, convertExpected |
15 | 15 |
|
16 | | -from html5lib import html5parser, treewalkers, treebuilders, constants |
| 16 | +from html5lib import html5parser, treewalkers, treebuilders, treeadapters, constants |
17 | 17 |
|
18 | 18 |
|
19 | 19 | def PullDOMAdapter(node): |
@@ -84,59 +84,13 @@ def PullDOMAdapter(node): |
84 | 84 |
|
85 | 85 |
|
86 | 86 | try: |
87 | | - from genshi.core import QName, Attrs |
88 | | - from genshi.core import START, END, TEXT, COMMENT, DOCTYPE |
| 87 | + import genshi # flake8: noqa |
89 | 88 | except ImportError: |
90 | 89 | pass |
91 | 90 | else: |
92 | | - def GenshiAdapter(tree): |
93 | | - text = None |
94 | | - for token in treewalkers.getTreeWalker("dom")(tree): |
95 | | - type = token["type"] |
96 | | - if type in ("Characters", "SpaceCharacters"): |
97 | | - if text is None: |
98 | | - text = token["data"] |
99 | | - else: |
100 | | - text += token["data"] |
101 | | - elif text is not None: |
102 | | - yield TEXT, text, (None, -1, -1) |
103 | | - text = None |
104 | | - |
105 | | - if type in ("StartTag", "EmptyTag"): |
106 | | - if token["namespace"]: |
107 | | - name = "{%s}%s" % (token["namespace"], token["name"]) |
108 | | - else: |
109 | | - name = token["name"] |
110 | | - attrs = Attrs([(QName("{%s}%s" % attr if attr[0] is not None else attr[1]), value) |
111 | | - for attr, value in token["data"].items()]) |
112 | | - yield (START, (QName(name), attrs), (None, -1, -1)) |
113 | | - if type == "EmptyTag": |
114 | | - type = "EndTag" |
115 | | - |
116 | | - if type == "EndTag": |
117 | | - if token["namespace"]: |
118 | | - name = "{%s}%s" % (token["namespace"], token["name"]) |
119 | | - else: |
120 | | - name = token["name"] |
121 | | - |
122 | | - yield END, QName(name), (None, -1, -1) |
123 | | - |
124 | | - elif type == "Comment": |
125 | | - yield COMMENT, token["data"], (None, -1, -1) |
126 | | - |
127 | | - elif type == "Doctype": |
128 | | - yield DOCTYPE, (token["name"], token["publicId"], |
129 | | - token["systemId"]), (None, -1, -1) |
130 | | - |
131 | | - else: |
132 | | - pass # FIXME: What to do? |
133 | | - |
134 | | - if text is not None: |
135 | | - yield TEXT, text, (None, -1, -1) |
136 | | - |
137 | 91 | treeTypes["genshi"] = \ |
138 | 92 | {"builder": treebuilders.getTreeBuilder("dom"), |
139 | | - "adapter": GenshiAdapter, |
| 93 | + "adapter": lambda tree: treeadapters.genshi.to_genshi(treewalkers.getTreeWalker("dom")(tree)), |
140 | 94 | "walker": treewalkers.getTreeWalker("genshi")} |
141 | 95 |
|
142 | 96 | import re |
|
0 commit comments