summaryrefslogtreecommitdiff
path: root/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py
diff options
context:
space:
mode:
authorShubham Saini <shubham6405@gmail.com>2018-12-11 10:01:23 +0000
committerShubham Saini <shubham6405@gmail.com>2018-12-11 10:01:23 +0000
commit68df54d6629ec019142eb149dd037774f2d11e7c (patch)
tree345bc22d46b4e01a4ba8303b94278952a4ed2b9e /venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py')
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py54
1 files changed, 54 insertions, 0 deletions
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
new file mode 100644
index 0000000..73c70c6
--- /dev/null
+++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/genshi.py
@@ -0,0 +1,54 @@
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)