diff --git a/scripts/Tests/UnitTests/Macro/__init__.py b/scripts/Tests/UnitTests/Macro/__init__.py new file mode 100644 index 0000000..cc31abc --- /dev/null +++ b/scripts/Tests/UnitTests/Macro/__init__.py @@ -0,0 +1 @@ +__author__ = 'rzaitov' diff --git a/scripts/Tests/UnitTests/Macro/test_macro.py b/scripts/Tests/UnitTests/Macro/test_macro.py new file mode 100644 index 0000000..18c496d --- /dev/null +++ b/scripts/Tests/UnitTests/Macro/test_macro.py @@ -0,0 +1,17 @@ +import unittest +from utils.Macro import Macro + + +class TestMacro(unittest.TestCase): + def setUp(self): + self.macroParser = Macro({}) + + def test_parseMacros(self): + line = 'hello {@this} is {@my_macro} and {@macro_with_numbers123}' + symbols = self.macroParser.getSymbols(line) + + self.assertEqual(3, len(symbols)) + self.assertTrue('this' in symbols) + self.assertTrue('my_macro' in symbols) + self.assertTrue('macro_with_numbers123' in symbols) + diff --git a/scripts/utils/Macro.py b/scripts/utils/Macro.py new file mode 100644 index 0000000..4279490 --- /dev/null +++ b/scripts/utils/Macro.py @@ -0,0 +1,26 @@ +import re + +class Macro: + def __init__(self, valueResolver): + assert valueResolver is not None + + self.__valueResolver = valueResolver + + def resolveLine(self, line): + assert line is not None + + symbols = self.getSymbols(line) + + def getSymbols(self, line): + assert line is not None + + symRegexp = r"{@(?P[\w]+)}" + regexp = re.compile(symRegexp) + + result = regexp.findall(line) + symbols = [] + if result is not None: + for r in result: + symbols.append(r) + + return symbols \ No newline at end of file