36 lines
922 B
Python
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)
|
|
|
|
|