diff options
author | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
---|---|---|
committer | Shubham Saini <shubham6405@gmail.com> | 2018-12-11 10:01:23 +0000 |
commit | 68df54d6629ec019142eb149dd037774f2d11e7c (patch) | |
tree | 345bc22d46b4e01a4ba8303b94278952a4ed2b9e /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.py | 54 |
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 @@ | |||
1 | from __future__ import absolute_import, division, unicode_literals | ||
2 | |||
3 | from genshi.core import QName, Attrs | ||
4 | from genshi.core import START, END, TEXT, COMMENT, DOCTYPE | ||
5 | |||
6 | |||
7 | def 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) | ||