From 0587ffc13944701ed331194f49e7b9518181f4f0 Mon Sep 17 00:00:00 2001 From: Rustam Zaitov Date: Mon, 28 Oct 2013 00:59:11 +0400 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=B4=D0=B5=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=20LineParser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/parser/LineParser.py | 15 +++++++++++++++ .../parser/ProjectParser/ProjectLineParser.py | 17 +++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 scripts/parser/LineParser.py diff --git a/scripts/parser/LineParser.py b/scripts/parser/LineParser.py new file mode 100644 index 0000000..3a077bc --- /dev/null +++ b/scripts/parser/LineParser.py @@ -0,0 +1,15 @@ +class LineParser: + def parseLine(self, line): + assert line is not None + pass + + def isValidLine(self, line): + assert line is not None + return False + + def _guardMatch(self, match_object, source, regexpSource = None): + if match_object is None: + msg = 'Recognition exception: {0} for {1}'.format(source, regexpSource) + raise Exception(msg) + + diff --git a/scripts/parser/ProjectParser/ProjectLineParser.py b/scripts/parser/ProjectParser/ProjectLineParser.py index 36f68ec..3b822ba 100644 --- a/scripts/parser/ProjectParser/ProjectLineParser.py +++ b/scripts/parser/ProjectParser/ProjectLineParser.py @@ -1,8 +1,9 @@ +from parser.LineParser import LineParser from parser.ProjectParser.ProjectSetting.AttribureSetting import AttributeSetting from parser.ProjectParser.ProjectSetting.KeyValueSetting import KeyValueSetting import re -class ProjectLineParser: +class ProjectLineParser(LineParser): def __init__(self, value_provider, command_token): assert value_provider is not None @@ -10,6 +11,7 @@ class ProjectLineParser: self._command_token = command_token def parseLine(self, line): + LineParser.parseLine(line) ws = ' ' cmd_name_regexp = "^(?P{0})".format(self._command_token) app_regexp = r"(?Papp:\S+)" @@ -19,7 +21,7 @@ class ProjectLineParser: regexp = re.compile(source, re.UNICODE) match = regexp.search(line) - self.__guardMatch(match, line) + self._guardMatch(match, line) cmd_name = match.group('cmd_name') self.__parseProjectStatement(cmd_name) @@ -40,7 +42,7 @@ class ProjectLineParser: patt = r'app:(?P\w+)' match = re.match(patt, statement) - self.__guardMatch(match, statement) + self._guardMatch(match, statement) return match.group('app_name') @@ -59,7 +61,7 @@ class ProjectLineParser: patt = r"key:(?P\w+) '(?P[^']+)'" match = re.search(patt, statement) - self.__guardMatch(match, statement) + self._guardMatch(match, statement) key = match.group('key') value_link = match.group('value') @@ -73,7 +75,7 @@ class ProjectLineParser: patt = r"(?P\w+) '(?P[^']+)'" match = re.search(patt, statement) - self.__guardMatch(match, statement) + self._guardMatch(match, statement) attribute_name = match.group('attribute_name') value_link = match.group('attribute_value') @@ -82,10 +84,5 @@ class ProjectLineParser: setting = AttributeSetting(attribute_name, attribute_value) return setting - def __guardMatch(self, match_object, source): - if match_object is None: - msg = 'Recognition exception: {0}'.format(source) - raise Exception(msg) - def __guardSource(self, source_text): assert source_text is not None and len(source_text) > 0 \ No newline at end of file