|
16 | 16 | from html5lib import html5parser, treewalkers, treebuilders, treeadapters, constants
|
17 | 17 |
|
18 | 18 |
|
19 |
| -def PullDOMAdapter(node): |
20 |
| - from xml.dom import Node |
21 |
| - from xml.dom.pulldom import START_ELEMENT, END_ELEMENT, COMMENT, CHARACTERS |
22 |
| - |
23 |
| - if node.nodeType in (Node.DOCUMENT_NODE, Node.DOCUMENT_FRAGMENT_NODE): |
24 |
| - for childNode in node.childNodes: |
25 |
| - for event in PullDOMAdapter(childNode): |
26 |
| - yield event |
27 |
| - |
28 |
| - elif node.nodeType == Node.DOCUMENT_TYPE_NODE: |
29 |
| - raise NotImplementedError("DOCTYPE nodes are not supported by PullDOM") |
30 |
| - |
31 |
| - elif node.nodeType == Node.COMMENT_NODE: |
32 |
| - yield COMMENT, node |
33 |
| - |
34 |
| - elif node.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE): |
35 |
| - yield CHARACTERS, node |
36 |
| - |
37 |
| - elif node.nodeType == Node.ELEMENT_NODE: |
38 |
| - yield START_ELEMENT, node |
39 |
| - for childNode in node.childNodes: |
40 |
| - for event in PullDOMAdapter(childNode): |
41 |
| - yield event |
42 |
| - yield END_ELEMENT, node |
43 |
| - |
44 |
| - else: |
45 |
| - raise NotImplementedError("Node type not supported: " + str(node.nodeType)) |
46 |
| - |
47 | 19 | treeTypes = {
|
48 | 20 | "DOM": {"builder": treebuilders.getTreeBuilder("dom"),
|
49 | 21 | "walker": treewalkers.getTreeWalker("dom")},
|
50 |
| - "PullDOM": {"builder": treebuilders.getTreeBuilder("dom"), |
51 |
| - "adapter": PullDOMAdapter, |
52 |
| - "walker": treewalkers.getTreeWalker("pulldom")}, |
53 | 22 | }
|
54 | 23 |
|
55 | 24 | # Try whatever etree implementations are available from a list that are
|
|
0 commit comments