| Index: third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/filters/whitespace.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/filters/whitespace.py b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/filters/whitespace.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dfc60eebd35bd6450d82cf65abcbedca8f8fb9da
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/html5lib/html5lib/filters/whitespace.py
|
| @@ -0,0 +1,38 @@
|
| +from __future__ import absolute_import, division, unicode_literals
|
| +
|
| +import re
|
| +
|
| +from . import _base
|
| +from ..constants import rcdataElements, spaceCharacters
|
| +spaceCharacters = "".join(spaceCharacters)
|
| +
|
| +SPACES_REGEX = re.compile("[%s]+" % spaceCharacters)
|
| +
|
| +
|
| +class Filter(_base.Filter):
|
| +
|
| + spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements))
|
| +
|
| + def __iter__(self):
|
| + preserve = 0
|
| + for token in _base.Filter.__iter__(self):
|
| + type = token["type"]
|
| + if type == "StartTag" \
|
| + and (preserve or token["name"] in self.spacePreserveElements):
|
| + preserve += 1
|
| +
|
| + elif type == "EndTag" and preserve:
|
| + preserve -= 1
|
| +
|
| + elif not preserve and type == "SpaceCharacters" and token["data"]:
|
| + # Test on token["data"] above to not introduce spaces where there were not
|
| + token["data"] = " "
|
| +
|
| + elif not preserve and type == "Characters":
|
| + token["data"] = collapse_spaces(token["data"])
|
| +
|
| + yield token
|
| +
|
| +
|
| +def collapse_spaces(text):
|
| + return SPACES_REGEX.sub(' ', text)
|
|
|