Реализовал парсер команды создания бэкапа
This commit is contained in:
parent
bb01973963
commit
ec57e67133
|
|
@ -168,7 +168,6 @@ Generated_Code #added for RIA/Silverlight projects
|
|||
# Backup & report files from converting an old project file to a newer
|
||||
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import unittest
|
||||
from parser.BackupParser.CreateBackupParser import CreateBackupParser
|
||||
|
||||
|
||||
class TestCreateBackupParser(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.__parser = CreateBackupParser()
|
||||
|
||||
def test_validInput(self):
|
||||
line = "create backup for 'SomeFolder'"
|
||||
createBackupArgs = self.__parser.parseLine(line)
|
||||
|
||||
self.assertEqual('SomeFolder', createBackupArgs.folderName)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
class CreateBackupArguments:
|
||||
def __init__(self):
|
||||
self.folderName = None
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
from parser.BackupParser.CreateBackupArguments import CreateBackupArguments
|
||||
from parser.LineParser import LineParser
|
||||
import re
|
||||
|
||||
class CreateBackupParser(LineParser):
|
||||
def __init__(self):
|
||||
self.__createBackupArguments = CreateBackupArguments()
|
||||
|
||||
def parseLine(self, line):
|
||||
assert line is not None
|
||||
|
||||
folderNameRegexp = r"'(?P<folder>[^']+)'$"
|
||||
|
||||
regexpSource = self.startsWithKeywordToken('create backup for') + folderNameRegexp
|
||||
regexp = re.compile(regexpSource, re.UNICODE)
|
||||
|
||||
match = regexp.match(line)
|
||||
self._guardMatch(match, line, regexpSource)
|
||||
|
||||
folderName = match.group('folder')
|
||||
self.__createBackupArguments.folderName = folderName
|
||||
|
||||
return self.__createBackupArguments
|
||||
|
||||
def isValidLine(self, line):
|
||||
assert line is not None
|
||||
|
||||
isValid = line.startswith('create backup')
|
||||
return isValid
|
||||
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
|
|
@ -24,14 +24,6 @@ class CopyLineParser(LineParser):
|
|||
self.__copyArguments.setArguments(src, dst)
|
||||
return self.__copyArguments
|
||||
|
||||
def keywordToken(self, keyword):
|
||||
assert keyword is not None
|
||||
return r'\s+' + keyword + r'\s+'
|
||||
|
||||
def startsWithKeywordToken(self, keyword):
|
||||
assert keyword is not None
|
||||
return r'^' + keyword + r'\s+'
|
||||
|
||||
def isValidLine(self, line):
|
||||
assert line is not None
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,17 @@ class LineParser:
|
|||
assert line is not None
|
||||
return False
|
||||
|
||||
def keywordToken(self, keyword):
|
||||
assert keyword is not None
|
||||
return r'\s+' + keyword + r'\s+'
|
||||
|
||||
def startsWithKeywordToken(self, keyword):
|
||||
assert keyword is not None
|
||||
return r'^' + keyword + r'\s+'
|
||||
|
||||
def _guardMatch(self, match_object, source, regexpSource = None):
|
||||
if match_object is None:
|
||||
msg = 'Recognition exception: {0} for {1}'.format(source, regexpSource)
|
||||
msg = 'Recognition exception: "{0}" for "{1}"'.format(source, regexpSource)
|
||||
raise Exception(msg)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue