Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/bleach/_vendor/html5lib/treeadapters/sax.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
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() |