from parser.LineParser import LineParser from parser.ProjectParser.ProjectSetting.KeyValueSetting import KeyValueSetting import re class ProjectParser(LineParser): def __init__(self, value_provider, command_token): assert value_provider is not None self._value_provider = value_provider self._command_token = command_token def parseLine(self, line): assert line is not None projectNameRegexp = r"(?P[a-Z0-9.]+)" keyRegexp = r'(?P[a-Z]+)' valueRegexp = r"'(?P[^']+)'" regexpSource = self.startsWithKeywordToken('for') + projectNameRegexp + self.keywordToken(r'project\s+set') + keyRegexp + self.keywordToken('to') + valueRegexp regexp = re.compile(regexpSource, re.UNICODE) match = regexp.match(line) self._guardMatch(match, line) projectName = match.group('name') key = match.group('key') value = match.group('value') settings = KeyValueSetting(key, value) settings.projectName = projectName return settings def isValidLine(self, line): regexpSrc = r'for\s+.*project\s+set' regexp = re.compile(regexpSrc, re.UNICODE) match = regexp.match(line) return match is not None