diff options
author | ptmcg <ptmcg@austin.rr.com> | 2020-10-25 14:42:07 -0500 |
---|---|---|
committer | ptmcg <ptmcg@austin.rr.com> | 2020-10-25 14:42:07 -0500 |
commit | 27dc324608a8c83afa47b296c52b7d6c9aa8795e (patch) | |
tree | 39161e2775e938e75a2e81842e4703e57356f246 /pyparsing/util.py | |
parent | 7f68a2aa4386e8a075aabc92ca8b6582bcc25a42 (diff) | |
download | pyparsing-git-27dc324608a8c83afa47b296c52b7d6c9aa8795e.tar.gz |
minor perf changes II
Diffstat (limited to 'pyparsing/util.py')
-rw-r--r-- | pyparsing/util.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/pyparsing/util.py b/pyparsing/util.py index 152316c..3cb69d2 100644 --- a/pyparsing/util.py +++ b/pyparsing/util.py @@ -143,14 +143,16 @@ def _collapseStringToRanges(s, re_escape=True): def escape_re_range_char(c): return "\\" + c if c in r"\^-][" else c + def no_escape_re_range_char(c): + return c + if not re_escape: - escape_re_range_char = lambda c: c + escape_re_range_char = no_escape_re_range_char ret = [] for _, chars in itertools.groupby(sorted(s), key=is_consecutive): first = last = next(chars) - for c in chars: - last = c + last = collections.deque(itertools.chain(iter([last]), chars), maxlen=1).pop() if first == last: ret.append(escape_re_range_char(first)) else: |