Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/bleach/_vendor/html5lib/treeadapters/genshi.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 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) |