BuildScript/scripts/TouchinBuild/parsers/SettingsParser/SettingsMerger.py

33 lines
819 B
Python

class SettingsMerger:
def __init__(self):
pass
def merge(self, globalSettings, settingDescription):
value = settingDescription['value']
segments = settingDescription['segments']
propPath = self.getPath(segments)
propName = self.getPropertyName(segments)
settingsDict = self.getSettingsDictByPath(globalSettings, propPath)
settingsDict[propName] = value
def getSettingsDictByPath(self, globalSettings, pathToSettingsDict):
settingsDict = globalSettings
for segment in pathToSettingsDict:
if segment not in settingsDict:
settingsDict[segment] = {}
settingsDict = settingsDict[segment]
return settingsDict
def getPath(self, segments):
assert segments is not None
return segments[0:-1]
def getPropertyName(self, segments):
assert segments is not None
return segments[-1]