From 7d0c32892dfbd48f5ac524446635262a86048c86 Mon Sep 17 00:00:00 2001 From: Igor Dejanovic <igor.dejanovic@gmail.com> Date: Sun, 3 Aug 2014 20:00:46 +0200 Subject: [PATCH] Removed multiline flag. --- arpeggio/__init__.py | 16 +++------------- arpeggio/peg.py | 3 +-- tests/unit/test_flags.py | 8 +------- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/arpeggio/__init__.py b/arpeggio/__init__.py index 397b163..5e6fef2 100644 --- a/arpeggio/__init__.py +++ b/arpeggio/__init__.py @@ -490,22 +490,17 @@ class RegExMatch(Match): It will be used to create regular expression using re.compile. ignore_case(bool): If case insensitive match is needed. Default is None to support propagation from global parser setting. - multiline(bool): If regex matching is in multiline mode. - Default is None to support propagation from global parser setting. ''' - def __init__(self, to_match, rule=None, ignore_case=None, multiline=None): + def __init__(self, to_match, rule=None, ignore_case=None): super(RegExMatch, self).__init__(rule) self.to_match = to_match self.ignore_case = ignore_case - self.multiline = multiline def compile(self): - flags = 0 + flags = re.MULTILINE if self.ignore_case: flags |= re.IGNORECASE - if self.multiline: - flags |= re.MULTILINE self.regex = re.compile(self.to_match, flags) def __str__(self): @@ -790,20 +785,17 @@ class Parser(object): ws (str): A string consisting of whitespace characters. reduce_tree (bool): If true non-terminals with single child will be eliminated from the parse tree. Default is True. - multiline(bool): If RegExMatch is going to match in multiline mode - (default=False). ignore_case(bool): If case is ignored (default=False) debug (bool): If true debugging messages will be printed. comments_model: parser model for comments. """ def __init__(self, skipws=True, ws=DEFAULT_WS, reduce_tree=False, - debug=False, multiline=False, ignore_case=False): + debug=False, ignore_case=False): self.skipws = skipws self.ws = ws self.reduce_tree = reduce_tree self.ignore_case = ignore_case - self.multiline = multiline self.debug = debug self.comments_model = None self.sem_actions = {} @@ -1081,8 +1073,6 @@ class ParserPython(Parser): # parser. if expression.ignore_case is None: expression.ignore_case = self.ignore_case - if expression.multiline is None: - expression.multiline = self.multiline expression.compile() retval = expression diff --git a/arpeggio/peg.py b/arpeggio/peg.py index 5dc8832..f047aa7 100644 --- a/arpeggio/peg.py +++ b/arpeggio/peg.py @@ -193,8 +193,7 @@ class SemRuleCrossRef(SemanticAction): class SemRegEx(SemanticAction): def first_pass(self, parser, node, children): match = RegExMatch(children[0], - ignore_case=parser.ignore_case, - multiline=parser.multiline) + ignore_case=parser.ignore_case) match.compile() return match diff --git a/tests/unit/test_flags.py b/tests/unit/test_flags.py index d1749bc..94f7df8 100644 --- a/tests/unit/test_flags.py +++ b/tests/unit/test_flags.py @@ -15,11 +15,10 @@ from arpeggio import RegExMatch as _ from arpeggio import NoMatch -def foo(): return 'r', bar, baz, Optional(buz), Optional(ml), EOF +def foo(): return 'r', bar, baz, Optional(buz), EOF def bar(): return 'BAR' def baz(): return _(r'1\w+') def buz(): return _(r'Aba*', ignore_case=True) -def ml(): return _(r'//.*$', multiline=True) @pytest.fixture def parser_ci(): @@ -39,11 +38,6 @@ def test_parse_tree_nonci(parser_nonci): with pytest.raises(NoMatch): parser_nonci.parse(input_str) -def test_parse_multiline(parser_ci): - input_str = """r bar 1baz //adfadsfadf asdfadsfadsf adfadf""" - parse_tree = parser_ci.parse(input_str) - assert parse_tree is not None - def test_flags_override(parser_nonci): # Parser is not case insensitive # But the buz match is. -- 2.18.0