summaryrefslogtreecommitdiff
path: root/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters')
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/__init__.py30
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py54
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py50
3 files changed, 0 insertions, 134 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/__init__.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/__init__.py
deleted file mode 100644
index 8767fb0..0000000
--- a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
1"""Tree adapters let you convert from one tree structure to another
2
3Example:
4
5.. code-block:: python
6
7 from pip._vendor import html5lib
8 from pip._vendor.html5lib.treeadapters import genshi
9
10 doc = '<html><body>Hi!</body></html>'
11 treebuilder = html5lib.getTreeBuilder('etree')
12 parser = html5lib.HTMLParser(tree=treebuilder)
13 tree = parser.parse(doc)
14 TreeWalker = html5lib.getTreeWalker('etree')
15
16 genshi_tree = genshi.to_genshi(TreeWalker(tree))
17
18"""
19from __future__ import absolute_import, division, unicode_literals
20
21from . import sax
22
23__all__ = ["sax"]
24
25try:
26 from . import genshi # noqa
27except ImportError:
28 pass
29else:
30 __all__.append("genshi")
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py
deleted file mode 100644
index 73c70c6..0000000
--- a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py
+++ /dev/null
@@ -1,54 +0,0 @@
1from __future__ import absolute_import, division, unicode_literals
2
3from genshi.core import QName, Attrs
4from genshi.core import START, END, TEXT, COMMENT, DOCTYPE
5
6
7def to_genshi(walker):
8 """Convert a tree to a genshi tree
9
10 :arg walker: the treewalker to use to walk the tree to convert it
11
12 :returns: generator of genshi nodes
13
14 """
15 text = []
16 for token in walker:
17 type = token["type"]
18 if type in ("Characters", "SpaceCharacters"):
19 text.append(token["data"])
20 elif text:
21 yield TEXT, "".join(text), (None, -1, -1)
22 text = []
23
24 if type in ("StartTag", "EmptyTag"):
25 if token["namespace"]:
26 name = "{%s}%s" % (token["namespace"], token["name"])
27 else:
28 name = token["name"]
29 attrs = Attrs([(QName("{%s}%s" % attr if attr[0] is not None else attr[1]), value)
30 for attr, value in token["data"].items()])
31 yield (START, (QName(name), attrs), (None, -1, -1))
32 if type == "EmptyTag":
33 type = "EndTag"
34
35 if type == "EndTag":
36 if token["namespace"]:
37 name = "{%s}%s" % (token["namespace"], token["name"])
38 else:
39 name = token["name"]
40
41 yield END, QName(name), (None, -1, -1)
42
43 elif type == "Comment":
44 yield COMMENT, token["data"], (None, -1, -1)
45
46 elif type == "Doctype":
47 yield DOCTYPE, (token["name"], token["publicId"],
48 token["systemId"]), (None, -1, -1)
49
50 else:
51 pass # FIXME: What to do?
52
53 if text:
54 yield TEXT, "".join(text), (None, -1, -1)
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py
deleted file mode 100644
index 1f06d13..0000000
--- a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py
+++ /dev/null
@@ -1,50 +0,0 @@
1from __future__ import absolute_import, division, unicode_literals
2
3from xml.sax.xmlreader import AttributesNSImpl
4
5from ..constants import adjustForeignAttributes, unadjustForeignAttributes
6
7prefix_mapping = {}
8for prefix, localName, namespace in adjustForeignAttributes.values():
9 if prefix is not None:
10 prefix_mapping[prefix] = namespace
11
12
13def to_sax(walker, handler):
14 """Call SAX-like content handler based on treewalker walker
15
16 :arg walker: the treewalker to use to walk the tree to convert it
17
18 :arg handler: SAX handler to use
19
20 """
21 handler.startDocument()
22 for prefix, namespace in prefix_mapping.items():
23 handler.startPrefixMapping(prefix, namespace)
24
25 for token in walker:
26 type = token["type"]
27 if type == "Doctype":
28 continue
29 elif type in ("StartTag", "EmptyTag"):
30 attrs = AttributesNSImpl(token["data"],
31 unadjustForeignAttributes)
32 handler.startElementNS((token["namespace"], token["name"]),
33 token["name"],
34 attrs)
35 if type == "EmptyTag":
36 handler.endElementNS((token["namespace"], token["name"]),
37 token["name"])
38 elif type == "EndTag":
39 handler.endElementNS((token["namespace"], token["name"]),
40 token["name"])
41 elif type in ("Characters", "SpaceCharacters"):
42 handler.characters(token["data"])
43 elif type == "Comment":
44 pass
45 else:
46 assert False, "Unknown token type"
47
48 for prefix, namespace in prefix_mapping.items():
49 handler.endPrefixMapping(prefix)
50 handler.endDocument()