diff options
author | ptmcg <ptmcg@austin.rr.com> | 2022-01-02 16:58:41 -0600 |
---|---|---|
committer | ptmcg <ptmcg@austin.rr.com> | 2022-01-02 16:58:41 -0600 |
commit | 1ccf846394a055924b810faaf9628dac53633848 (patch) | |
tree | fa1dd4692b300281ba8c214118a7d6311f1a9d23 /pyparsing/core.py | |
parent | 30bd0f3445ed585e9263b8d132004ccb0732a3d7 (diff) | |
download | pyparsing-git-1ccf846394a055924b810faaf9628dac53633848.tar.gz |
Issue #350 - fixed whitespace skipping around White expressions
Diffstat (limited to 'pyparsing/core.py')
-rw-r--r-- | pyparsing/core.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/pyparsing/core.py b/pyparsing/core.py index 53cca4c..cb9ac9a 100644 --- a/pyparsing/core.py +++ b/pyparsing/core.py @@ -3339,7 +3339,7 @@ class White(Token): super().__init__() self.matchWhite = ws self.set_whitespace_chars( - "".join(c for c in self.whiteChars if c not in self.matchWhite), + "".join(c for c in self.whiteStrs if c not in self.matchWhite), copy_defaults=True, ) # self.leave_whitespace() @@ -3780,11 +3780,14 @@ class And(ParseExpression): super().__init__(exprs, savelist) if self.exprs: self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs) - self.set_whitespace_chars( - self.exprs[0].whiteChars, - copy_defaults=self.exprs[0].copyDefaultWhiteChars, - ) - self.skipWhitespace = self.exprs[0].skipWhitespace + if not isinstance(self.exprs[0], White): + self.set_whitespace_chars( + self.exprs[0].whiteChars, + copy_defaults=self.exprs[0].copyDefaultWhiteChars, + ) + self.skipWhitespace = self.exprs[0].skipWhitespace + else: + self.skipWhitespace = False else: self.mayReturnEmpty = True self.callPreparse = True @@ -3913,7 +3916,9 @@ class Or(ParseExpression): if self.exprs: self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) self.saveAsList = any(e.saveAsList for e in self.exprs) - self.skipWhitespace = all(e.skipWhitespace for e in self.exprs) + self.skipWhitespace = all( + e.skipWhitespace and not isinstance(e, White) for e in self.exprs + ) else: self.saveAsList = False return self @@ -4069,7 +4074,9 @@ class MatchFirst(ParseExpression): if self.exprs: self.saveAsList = any(e.saveAsList for e in self.exprs) self.mayReturnEmpty = any(e.mayReturnEmpty for e in self.exprs) - self.skipWhitespace = all(e.skipWhitespace for e in self.exprs) + self.skipWhitespace = all( + e.skipWhitespace and not isinstance(e, White) for e in self.exprs + ) else: self.saveAsList = False self.mayReturnEmpty = True |