|
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