Для работы с таблицей символов внедрена зависимость valueProvider
This commit is contained in:
parent
0cc17356c3
commit
1a020db817
|
|
@ -0,0 +1,3 @@
|
|||
class ValueProvider:
|
||||
def getValueFor(self, link):
|
||||
return link
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import unittest
|
||||
from UnitTests.CsprojParser.ValueProvider import ValueProvider
|
||||
from parser.CsprojParser.CsprojLineParser import CsprojLineParser
|
||||
|
||||
|
||||
class TestCsprojParser(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.parser = CsprojLineParser()
|
||||
value_provider = ValueProvider()
|
||||
self.parser = CsprojLineParser(value_provider)
|
||||
|
||||
def test_parseAppStatement(self):
|
||||
statement = "app:SomeAppName"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import unittest
|
||||
from UnitTests.CsprojParser.ValueProvider import ValueProvider
|
||||
from parser.CsprojParser.CsprojParser import CsprojParser
|
||||
|
||||
|
||||
|
|
@ -15,9 +16,10 @@ class TestCase(unittest.TestCase):
|
|||
"csproj app:second attr1 'attr_val1'",
|
||||
"csproj app:second attr2 'attr_val2'"]
|
||||
self.__parser = None
|
||||
self.__value_provider = ValueProvider()
|
||||
|
||||
def __do_parse(self):
|
||||
self.__parser = CsprojParser(self.__lineCollection)
|
||||
self.__parser = CsprojParser(self.__lineCollection, self.__value_provider)
|
||||
self.__parser.parse()
|
||||
|
||||
def test_projectCount(self):
|
||||
|
|
|
|||
|
|
@ -3,6 +3,11 @@ from parser.CsprojParser.CsprojSetting.KeyValueSetting import KeyValueSetting
|
|||
import re
|
||||
|
||||
class CsprojLineParser:
|
||||
def __init__(self, value_provider):
|
||||
assert value_provider is not None
|
||||
|
||||
self._value_provider = value_provider
|
||||
|
||||
def parse(self, line):
|
||||
ws = ' '
|
||||
csproj_regexp = "^(?P<cmd_name>csproj)"
|
||||
|
|
@ -56,7 +61,8 @@ class CsprojLineParser:
|
|||
self.__guardMatch(match, statement)
|
||||
|
||||
key = match.group('key')
|
||||
value = match.group('value')
|
||||
value_link = match.group('value')
|
||||
value = self._value_provider.getValueFor(value_link)
|
||||
setting = KeyValueSetting(key, value)
|
||||
|
||||
return setting
|
||||
|
|
@ -69,7 +75,8 @@ class CsprojLineParser:
|
|||
self.__guardMatch(match, statement)
|
||||
|
||||
attribute_name = match.group('attribute_name')
|
||||
attribute_value = match.group('attribute_value')
|
||||
value_link = match.group('attribute_value')
|
||||
attribute_value = self._value_provider.getValueFor(value_link)
|
||||
|
||||
setting = AttributeSetting(attribute_name, attribute_value)
|
||||
return setting
|
||||
|
|
|
|||
|
|
@ -3,16 +3,18 @@ from parser.CsprojParser.CsprojLineParser import CsprojLineParser
|
|||
|
||||
|
||||
class CsprojParser:
|
||||
def __init__(self, line_collection):
|
||||
def __init__(self, line_collection, value_provider):
|
||||
assert line_collection is not None
|
||||
assert value_provider is not None
|
||||
|
||||
self.line_collection = line_collection
|
||||
self._line_collection = line_collection
|
||||
self._value_provider = value_provider
|
||||
self.projects_dict = {}
|
||||
|
||||
def parse(self):
|
||||
|
||||
settings = []
|
||||
for line in self.line_collection:
|
||||
for line in self._line_collection:
|
||||
settings.append(self.__parse_line(line))
|
||||
|
||||
for s in settings:
|
||||
|
|
@ -28,7 +30,7 @@ class CsprojParser:
|
|||
return csproj
|
||||
|
||||
def __parse_line(self, line):
|
||||
line_parser = CsprojLineParser()
|
||||
line_parser = CsprojLineParser(self._value_provider)
|
||||
setting = line_parser.parse(line)
|
||||
|
||||
return setting
|
||||
Loading…
Reference in New Issue