Реализовал препроцессор включения текста

This commit is contained in:
rzaitov 2013-11-06 13:37:52 +04:00
parent dea4af4339
commit aef4ee5f20
5 changed files with 53 additions and 1 deletions

View File

@ -15,6 +15,6 @@ class TextInclude:
path = info[1]
content = self.contentProvider.fetchContent(path)
text.replace(includeStatement, content)
text = text.replace(includeStatement, content)
return text

View File

@ -0,0 +1 @@
sh echo hello from '{@app_name}'

View File

@ -0,0 +1 @@
__author__ = 'rzaitov'

View File

@ -0,0 +1,42 @@
import unittest
from Core.LineConveyor.TextInclude import TextInclude
from utils.IncludeProcessor import IncludeProcessor
class MockContentProvider:
def __init__(self):
pass
def fetchContent(self, path):
return """line 1
line 2
line 3"""
class TestIncludeText(unittest.TestCase):
def setUp(self):
includeProcessor = IncludeProcessor()
contentProvider = MockContentProvider()
self.includeText = TextInclude(includeProcessor, contentProvider)
def test_includeText(self):
text = """
bla bla
<include 'path1'>
another bla
<include 'paht2'>
yet another bla"""
processedText = self.includeText.processText(text)
expected = """
bla bla
line 1
line 2
line 3
another bla
line 1
line 2
line 3
yet another bla"""
self.assertEqual(expected, processedText)

View File

@ -1,12 +1,15 @@
# -*- coding: utf-8 -*-
import os
import argparse
from Core.FileContentProvider import FileContentProvider
from Core.LineConveyor.CommentRemover import CommentRemover
from Core.LineConveyor.TextConveyorPreprocessor import TextConveyorPreprocessor
from Core.LineConveyor.MacroResolver import MacroResolver
from Core.LineConveyor.Stripper import Stripper
from Core.LineConveyor.TextInclude import TextInclude
from commands.ValueProvider import ValueProvider
from utils.BuildConfigProvider import BuildConfigProvider
from utils.IncludeProcessor import IncludeProcessor
from utils.MacroProcessor import MacroProcessor
from utils.SettingsProvider.CmdArgsOverriderSettingsProvider import CmdArgsOverriderSettingsProvider
from utils.SettingsProvider.FromFileSettingsProvider import FromFileSettingsProvider
@ -35,8 +38,13 @@ class TaskRunner:
self.valueProvider = ValueProvider()
macroResolver = MacroResolver(macroProcessor, self.valueProvider)
includeProcessor = IncludeProcessor()
fileContentProvider = FileContentProvider()
textInclude = TextInclude(includeProcessor, fileContentProvider)
self.textPreprocessor = TextConveyorPreprocessor()
self.textPreprocessor.addProcessor(macroResolver)
self.textPreprocessor.addProcessor(textInclude)
self.linePreprocessor = TextConveyorPreprocessor()
self.linePreprocessor.addProcessor(lineStripper)