| Index: third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/treeadapters/sax.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/treeadapters/sax.py b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/treeadapters/sax.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ad47df95648cd79722504ac5ceb0a396557c1e71
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/treeadapters/sax.py
|
| @@ -0,0 +1,44 @@
|
| +from __future__ import absolute_import, division, unicode_literals
|
| +
|
| +from xml.sax.xmlreader import AttributesNSImpl
|
| +
|
| +from ..constants import adjustForeignAttributes, unadjustForeignAttributes
|
| +
|
| +prefix_mapping = {}
|
| +for prefix, localName, namespace in adjustForeignAttributes.values():
|
| + if prefix is not None:
|
| + prefix_mapping[prefix] = namespace
|
| +
|
| +
|
| +def to_sax(walker, handler):
|
| + """Call SAX-like content handler based on treewalker walker"""
|
| + handler.startDocument()
|
| + for prefix, namespace in prefix_mapping.items():
|
| + handler.startPrefixMapping(prefix, namespace)
|
| +
|
| + for token in walker:
|
| + type = token["type"]
|
| + if type == "Doctype":
|
| + continue
|
| + elif type in ("StartTag", "EmptyTag"):
|
| + attrs = AttributesNSImpl(token["data"],
|
| + unadjustForeignAttributes)
|
| + handler.startElementNS((token["namespace"], token["name"]),
|
| + token["name"],
|
| + attrs)
|
| + if type == "EmptyTag":
|
| + handler.endElementNS((token["namespace"], token["name"]),
|
| + token["name"])
|
| + elif type == "EndTag":
|
| + handler.endElementNS((token["namespace"], token["name"]),
|
| + token["name"])
|
| + elif type in ("Characters", "SpaceCharacters"):
|
| + handler.characters(token["data"])
|
| + elif type == "Comment":
|
| + pass
|
| + else:
|
| + assert False, "Unknown token type"
|
| +
|
| + for prefix, namespace in prefix_mapping.items():
|
| + handler.endPrefixMapping(prefix)
|
| + handler.endDocument()
|
|
|