|
- var мир = {};
-
- мир.строкаПути = function(п) {
- function вСтроку(ключ) {
- return `["${ключ}"]`;
- }
- return "мир" + п.map(вСтроку).join("") + " = ";
- };
-
- мир.создатьПуть = function(путь) {
- var уровень = мир;
- var длина = путь.length;
- for (var i = 0; i < длина; ++i)
- {
- var п = путь[i];
- if (!уровень[п])
- {
- уровень[п] = {};
- }
- else
- {
- уровень = уровень[п];
- }
- }
- };
-
- мир.разобрать = function(словарь, путь = []) {
- for (ключ in словарь)
- {
- var внутреннийПуть = путь.slice();
- внутреннийПуть.push(ключ);
- var значение = словарь[ключ];
- мир.создатьПуть(внутреннийПуть);
- if (typeof значение === "string")
- {
- // Функция.
- if (значение.startsWith("function"))
- {
- var содержимое = мир.строкаПути(внутреннийПуть) + значение;
- eval(содержимое);
- }
- // Строка.
- else
- {
- var содержимое = мир.строкаПути(внутреннийПуть) + '"' + значение + '"';
- eval(содержимое);
- }
- }
- /*
- // Массив.
- else if (Array.isArray(значение))
- {
- console.debug("разобрать массив");
- }
- */
- // Словарь.
- else if (значение === Object(значение))
- {
- мир.разобрать(значение, внутреннийПуть);
- }
- // Неизвестное.
- else
- {
- console.error("неизвестная пара ключ/значение", ключ, значение);
- }
- }
- };
|