внедрил конвеер предварительной обработки строк

This commit is contained in:
Rustam Zaitov 2013-11-05 01:20:08 +04:00
parent 5ce8eb0269
commit 41d334d907
3 changed files with 37 additions and 13 deletions

View File

@ -0,0 +1,16 @@
class LineConveyor:
def __init__(self):
self.processors = []
def addProcessor(self, processor):
assert processor is not None
self.processors.append(processor)
def processLine(self, line):
assert line is not None
for processor in self.processors:
line = processor.processLine(line)
return line

View File

@ -12,8 +12,11 @@ from commands.ValueProvider import ValueProvider
class StepsRunner:
def __init__(self, config):
def __init__(self, config, compositeLineProcessor):
assert config is not None
assert compositeLineProcessor is not None
self.lineConveyor = compositeLineProcessor
self.valueProvider = ValueProvider(config)
@ -36,14 +39,12 @@ class StepsRunner:
lines = content.splitlines()
for line in lines:
stripped = line.strip(' \t\n\r')
processedLine = self.lineConveyor.processLine(line)
if len(stripped) == 0:
continue
if stripped.startswith("#"):
if len(processedLine) == 0:
continue
else:
self.processLine(stripped)
self.processLine(processedLine)
def processLine(self, line):
if self.shCommandBuilder.isShCommand(line):

View File

@ -1,4 +1,7 @@
import os
from Core.LineConveyor.CommentRemover import CommentRemover
from Core.LineConveyor.LineConveyor import LineConveyor
from Core.LineConveyor.Stripper import Stripper
from utils.BuildConfigProvider import BuildConfigProvider
from utils.FromFileSettingsProvider import FromFileSettingsProvider
@ -14,14 +17,18 @@ from Core.StepsRunner import StepsRunner
class TaskRunner:
def __init__(self):
pass
self.configsProvider = BuildConfigProvider()
self.settingsProvider = FromFileSettingsProvider()
lineStripper = Stripper()
commentRemover = CommentRemover()
self.lineConveyor = LineConveyor()
self.lineConveyor.addProcessor(lineStripper)
self.lineConveyor.addProcessor(commentRemover)
def run(self):
settingsProvider = FromFileSettingsProvider()
settings = settingsProvider.fetchSettings()
configsProvider = BuildConfigProvider()
buildReadyConfigs = configsProvider.getConfigs(settings)
settings = self.settingsProvider.fetchSettings()
buildReadyConfigs = self.configsProvider.getConfigs(settings)
for bc in buildReadyConfigs:
self.runConfig(bc)
@ -29,7 +36,7 @@ class TaskRunner:
def runConfig(self, config):
content = self.getStepsContent(config)
stepsRunner = StepsRunner(config)
stepsRunner = StepsRunner(config, self.lineConveyor)
stepsRunner.run(content)
def getStepsContent(self, config):