предварительная обработка строк в файле настроек такая же как в файле шагов – обработка комментариев и удаление ведущих пробельных символов
This commit is contained in:
parent
6354c67bc3
commit
ee6442ecd0
|
|
@ -8,12 +8,12 @@ class TestCommentRemover(unittest.TestCase):
|
|||
|
||||
def test_startsWithComment(self):
|
||||
line = '# this line is comment'
|
||||
newLine = self.commentRemover.processText(line, self.commentRemover)
|
||||
newLine = self.commentRemover.processText(line, None)
|
||||
|
||||
self.assertEqual('', newLine)
|
||||
|
||||
def test_containsComment(self):
|
||||
line = 'this line contains # a comment'
|
||||
newLine = self.commentRemover.processText(line, self.commentRemover)
|
||||
newLine = self.commentRemover.processText(line, None)
|
||||
|
||||
self.assertEqual('this line contains ', newLine)
|
||||
|
|
@ -3,7 +3,10 @@ from parsers.SettingsParser.SettingsMerger import SettingsMerger
|
|||
|
||||
|
||||
class SettingsParser:
|
||||
def __init__(self, settings=None):
|
||||
def __init__(self, compositeLineProcessor, settings=None):
|
||||
assert compositeLineProcessor is not None
|
||||
|
||||
self.compositeLineProcessor = compositeLineProcessor
|
||||
self.settings = settings
|
||||
|
||||
if not self.settings:
|
||||
|
|
@ -14,14 +17,14 @@ class SettingsParser:
|
|||
|
||||
lines = content.splitlines()
|
||||
for line in lines:
|
||||
stripped = line.strip(' \t\n\r')
|
||||
processedLine = self.compositeLineProcessor.processText(line, None)
|
||||
|
||||
if len(stripped) == 0:
|
||||
continue
|
||||
if stripped.startswith("#"):
|
||||
if len(processedLine) == 0:
|
||||
continue
|
||||
else:
|
||||
self.processLine(processedLine)
|
||||
|
||||
self.processLine(stripped)
|
||||
self.processLine(processedLine)
|
||||
|
||||
def processLine(self, line):
|
||||
assert line is not None
|
||||
|
|
|
|||
|
|
@ -26,17 +26,17 @@ scriptDir = os.path.dirname(scriptFilePath)
|
|||
|
||||
|
||||
class TaskRunner:
|
||||
def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider):
|
||||
def __init__(self, settingsProvider, fileContentProvider, buildConfigProvider, linePreprocessor):
|
||||
assert settingsProvider is not None
|
||||
assert fileContentProvider is not None
|
||||
assert buildConfigProvider is not None
|
||||
assert linePreprocessor is not None
|
||||
|
||||
self.settingsProvider = settingsProvider
|
||||
self.fileContentProvider = fileContentProvider
|
||||
self.configsProvider = buildConfigProvider
|
||||
self.linePreprocessor = linePreprocessor
|
||||
|
||||
lineStripper = Stripper()
|
||||
commentRemover = CommentRemover()
|
||||
|
||||
macroProcessor = MacroProcessor()
|
||||
self.valueProvider = ValueProvider()
|
||||
|
|
@ -52,9 +52,6 @@ class TaskRunner:
|
|||
self.textPreprocessor.addProcessor(macroResolver)
|
||||
self.textPreprocessor.addProcessor(textInclude)
|
||||
|
||||
self.linePreprocessor = TextConveyorPreprocessor()
|
||||
self.linePreprocessor.addProcessor(commentRemover)
|
||||
self.linePreprocessor.addProcessor(lineStripper)
|
||||
|
||||
def run(self):
|
||||
rawSettings = self.settingsProvider.fetchSettings()
|
||||
|
|
@ -83,8 +80,16 @@ if __name__ == "__main__":
|
|||
parser = argparse.ArgumentParser()
|
||||
overrideArgs = parser.parse_known_args()[1]
|
||||
|
||||
# компоную препроцессор для индивидуальной обработки строк (удаление комментариев и ведущих пробельных символов)
|
||||
lineStripper = Stripper()
|
||||
commentRemover = CommentRemover()
|
||||
linePreprocessor = TextConveyorPreprocessor()
|
||||
linePreprocessor.addProcessor(commentRemover)
|
||||
linePreprocessor.addProcessor(lineStripper)
|
||||
|
||||
# TODO: перенести в корень комапановки
|
||||
fromFileSettingsProvider = FromFileSettingsProvider()
|
||||
settingsPath = 'scripts/settings.txt'
|
||||
fromFileSettingsProvider = FromFileSettingsProvider(settingsPath, linePreprocessor)
|
||||
overrideWithCmdSetProvider = CmdArgsOverriderSettingsProvider(fromFileSettingsProvider, overrideArgs)
|
||||
|
||||
fContentProvider = FileContentProvider()
|
||||
|
|
@ -96,5 +101,5 @@ if __name__ == "__main__":
|
|||
resolvedBuildConfigProvider = ResolvedBuildConfigProvider(predefineBuildConfigProvider)
|
||||
|
||||
|
||||
runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider, resolvedBuildConfigProvider)
|
||||
runner = TaskRunner(overrideWithCmdSetProvider, fContentProvider, resolvedBuildConfigProvider, linePreprocessor)
|
||||
runner.run()
|
||||
|
|
@ -3,14 +3,20 @@ from parsers.SettingsParser.SettingsParser import SettingsParser
|
|||
|
||||
|
||||
class FromFileSettingsProvider(SettingsProviderBase):
|
||||
def __init__(self):
|
||||
def __init__(self, pathToSettings, compositeLineProcessor):
|
||||
SettingsProviderBase.__init__(self)
|
||||
|
||||
assert pathToSettings is not None
|
||||
assert compositeLineProcessor is not None
|
||||
|
||||
self.pathToSettings = pathToSettings
|
||||
self.compositeLineProcessor = compositeLineProcessor
|
||||
|
||||
def fetchSettings(self):
|
||||
settingsFile = open('scripts/settings.txt')
|
||||
settingsFile = open(self.pathToSettings)
|
||||
content = settingsFile.read()
|
||||
|
||||
parser = SettingsParser()
|
||||
parser = SettingsParser(self.compositeLineProcessor)
|
||||
parser.parse(content)
|
||||
|
||||
return parser.settings
|
||||
|
|
|
|||
Loading…
Reference in New Issue