Files
json/0001.мир.js

69 lines
2.1 KiB
JavaScript

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("неизвестная пара ключ/значение", ключ, значение);
}
}
};