36 lines
947 B
Python
36 lines
947 B
Python
from parser.ProjectParser.Project import Project
|
|
from parser.ProjectParser.ProjectLineParser import ProjectLineParser
|
|
|
|
|
|
class ProjectParser:
|
|
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._value_provider = value_provider
|
|
self.projects_dict = {}
|
|
|
|
def parse(self):
|
|
|
|
settings = []
|
|
for line in self._line_collection:
|
|
settings.append(self.__parse_line(line))
|
|
|
|
for s in settings:
|
|
project = self.__fetchProject(s.projectName)
|
|
s.apply(project)
|
|
|
|
def __fetchProject(self, project_name):
|
|
assert project_name is not None
|
|
|
|
project = self.projects_dict.get(project_name, Project(project_name))
|
|
self.projects_dict[project_name] = project
|
|
|
|
return project
|
|
|
|
def __parse_line(self, line):
|
|
line_parser = ProjectLineParser(self._value_provider, 'csproj')
|
|
setting = line_parser.parse(line)
|
|
|
|
return setting |