|
- мир = {
- ключники: [],
- выставленныеЗначения: {},
- };
-
- мир.выпрямить = function(obj)
- {
- // https://stackoverflow.com/a/42121920
- var newObj = {};
- for (var key in obj)
- {
- if (typeof obj[key] === 'object' && obj[key] !== null)
- {
- var temp = мир.выпрямить(obj[key])
- for (var key2 in temp)
- {
- newObj[key + "." + key2] = temp[key2];
- }
- }
- else
- {
- newObj[key] = obj[key];
- }
- }
- return newObj;
- };
-
- мир.лишьНовыеЗначения = function(значения) {
- var новые = {};
- for (var ключ in значения)
- {
- var было = мир.выставленныеЗначения[ключ];
- var стало = значения[ключ];
- if (!(было != null && было == стало))
- {
- новые[ключ] = стало;
- мир.выставленныеЗначения[ключ] = стало;
- }
- }
- return новые;
- };
-
- мир.разобрать = function(словарь) {
- var значения = мир.лишьНовыеЗначения(мир.выпрямить(словарь));
- for (var ключ in значения)
- {
- var путь = ключ.split(".");
- var значение = значения[ключ];
- for (var номер in мир.ключники)
- {
- мир.ключники[номер](ключ, путь, значение);
- }
- }
- };
|