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/sax.py |
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py')
-rw-r--r-- | venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py | 50 |
1 files changed, 50 insertions, 0 deletions
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 new file mode 100644 index 0000000..1f06d13 --- /dev/null +++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/treeadapters/sax.py | |||
@@ -0,0 +1,50 @@ | |||
1 | from __future__ import absolute_import, division, unicode_literals | ||
2 | |||
3 | from xml.sax.xmlreader import AttributesNSImpl | ||
4 | |||
5 | from ..constants import adjustForeignAttributes, unadjustForeignAttributes | ||
6 | |||
7 | prefix_mapping = {} | ||
8 | for prefix, localName, namespace in adjustForeignAttributes.values(): | ||
9 | if prefix is not None: | ||
10 | prefix_mapping[prefix] = namespace | ||
11 | |||
12 | |||
13 | def 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() | ||