summaryrefslogtreecommitdiff
path: root/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py
diff options
context:
space:
mode:
authorShubham Saini <shubham6405@gmail.com>2018-12-11 10:01:23 +0000
committerShubham Saini <shubham6405@gmail.com>2018-12-11 10:01:23 +0000
commit68df54d6629ec019142eb149dd037774f2d11e7c (patch)
tree345bc22d46b4e01a4ba8303b94278952a4ed2b9e /venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py
First commit
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py')
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py
new file mode 100644
index 0000000..24bb0de
--- /dev/null
+++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/filters/whitespace.py
@@ -0,0 +1,38 @@
1from __future__ import absolute_import, division, unicode_literals
2
3import re
4
5from . import base
6from ..constants import rcdataElements, spaceCharacters
7spaceCharacters = "".join(spaceCharacters)
8
9SPACES_REGEX = re.compile("[%s]+" % spaceCharacters)
10
11
12class Filter(base.Filter):
13 """Collapses whitespace except in pre, textarea, and script elements"""
14 spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements))
15
16 def __iter__(self):
17 preserve = 0
18 for token in base.Filter.__iter__(self):
19 type = token["type"]
20 if type == "StartTag" \
21 and (preserve or token["name"] in self.spacePreserveElements):
22 preserve += 1
23
24 elif type == "EndTag" and preserve:
25 preserve -= 1
26
27 elif not preserve and type == "SpaceCharacters" and token["data"]:
28 # Test on token["data"] above to not introduce spaces where there were not
29 token["data"] = " "
30
31 elif not preserve and type == "Characters":
32 token["data"] = collapse_spaces(token["data"])
33
34 yield token
35
36
37def collapse_spaces(text):
38 return SPACES_REGEX.sub(' ', text)