BuildScript/scripts/parsers/SettingsParser/SettingsMerger.py

36 lines
922 B
Python

class SettingsMerger:
def __init__(self):
pass
def merge(self, globalSettings, settingDescription):
value = settingDescription['value']
segments = settingDescription['segments']
propPath = segments[0:-1]
propName = segments[-1]
settingsDict = self.getSettingsDictByPath(globalSettings, propPath)
#self.overrideGuard(settingsDict, propName, 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 overrideGuard(self, dictionary, key, path):
# if key in dictionary:
# pathStr = '.'.join(path)
# msg = 'settings with name {0} by path {1} already exists with value {3}'.format(key, dictionary[key], pathStr)
# raise Exception(msg)