переименовать 6.0 в 5.2
This commit is contained in:
@@ -1,86 +0,0 @@
|
||||
var мир = {};
|
||||
|
||||
мир.uuid = function()
|
||||
{
|
||||
// https://stackoverflow.com/a/2117523
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
|
||||
/[xy]/g,
|
||||
function(c)
|
||||
{
|
||||
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
мир.вZ64 = function(строка)
|
||||
{
|
||||
var байты = new TextEncoder("utf-8").encode(строка);
|
||||
var архив = pako.deflate(байты, { to: 'string' });
|
||||
return base64js.fromByteArray(архив);
|
||||
};
|
||||
|
||||
мир.изZ64 = function(строка)
|
||||
{
|
||||
var архив = base64js.toByteArray(строка);
|
||||
var байты = pako.inflate(архив);
|
||||
return new TextDecoder("utf-8").decode(байты);
|
||||
};
|
||||
|
||||
мир.задатьПолныйКлюч = function(словарь, полныйКлюч, значение) {
|
||||
var путь = полныйКлюч.split(".");
|
||||
var пройти = путь.length - 1;
|
||||
var вложенность = словарь;
|
||||
for (var номер = 0; номер < пройти; ++номер)
|
||||
{
|
||||
var ключ = путь[номер];
|
||||
if (!(ключ in вложенность))
|
||||
{
|
||||
вложенность[ключ] = {};
|
||||
вложенность = вложенность[ключ];
|
||||
}
|
||||
}
|
||||
// Значение в конце вложенности.
|
||||
var ключ = путь[пройти];
|
||||
вложенность[ключ] = значение;
|
||||
};
|
||||
|
||||
мир.назначитьКнопкамСобытия = function(события, список)
|
||||
{
|
||||
for (var номер in список)
|
||||
{
|
||||
const пара = список[номер];
|
||||
var кнопка = document.getElementById(пара[0]);
|
||||
кнопка.addEventListener("click", function(_) {
|
||||
события.уведомить(пара[1]);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
мир.параметрыЗапуска = function()
|
||||
{
|
||||
var параметры = {};
|
||||
var запрос = window.location.search.substring(1);
|
||||
var аргументы = запрос.split("&");
|
||||
for (var номер in аргументы)
|
||||
{
|
||||
var арг = аргументы[номер];
|
||||
var позицияЗнака = арг.indexOf("=");
|
||||
// Лишь ключ.
|
||||
if (позицияЗнака == -1)
|
||||
{
|
||||
var ключ = decodeURIComponent(арг);
|
||||
параметры[ключ] = null;
|
||||
}
|
||||
// Ключ со значением.
|
||||
else
|
||||
{
|
||||
var сыройКлюч = арг.slice(0, позицияЗнака);
|
||||
var сыроеЗначение = арг.slice(позицияЗнака + 1);
|
||||
var ключ = decodeURIComponent(сыройКлюч);
|
||||
var значение = decodeURIComponent(сыроеЗначение);
|
||||
параметры[ключ] = значение;
|
||||
}
|
||||
}
|
||||
return параметры;
|
||||
};
|
||||
@@ -1,36 +0,0 @@
|
||||
function События(uuid)
|
||||
{
|
||||
this.создать = function()
|
||||
{
|
||||
this.обработчики = [];
|
||||
this.обработчики = {};
|
||||
};
|
||||
|
||||
this.подписать = function(обработчик, имя)
|
||||
{
|
||||
let указатель = имя || uuid();
|
||||
this.обработчики[указатель] = обработчик;
|
||||
};
|
||||
|
||||
this.отписать = function(обработчик) {
|
||||
for (var указатель in this.обработчики) {
|
||||
let обр = this.обработчики[указатель];
|
||||
if (обр == обработчик)
|
||||
{
|
||||
delete this.обработчики[указатель];
|
||||
return;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.уведомить = function(событие) {
|
||||
for (var номер in this.обработчики)
|
||||
{
|
||||
var обработчик = this.обработчики[номер];
|
||||
обработчик.обработатьСобытие(событие);
|
||||
}
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
this.создать();
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
function Состояние()
|
||||
{
|
||||
this.создать = function()
|
||||
{
|
||||
this.обработчик = null;
|
||||
this.значения = {};
|
||||
};
|
||||
|
||||
this.выпрямить = function(obj)
|
||||
{
|
||||
// https://stackoverflow.com/a/42121920
|
||||
var newObj = {};
|
||||
for (var key in obj)
|
||||
{
|
||||
if (typeof obj[key] === 'object' && obj[key] !== null)
|
||||
{
|
||||
var temp = this.выпрямить(obj[key])
|
||||
for (var key2 in temp)
|
||||
{
|
||||
newObj[key + "." + key2] = temp[key2];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
}
|
||||
return newObj;
|
||||
};
|
||||
|
||||
this.лишьНовыеЗначения = function(значения)
|
||||
{
|
||||
var новые = {};
|
||||
for (var ключ in значения)
|
||||
{
|
||||
var было = this.значения[ключ];
|
||||
var стало = значения[ключ];
|
||||
if (!(было != null && было == стало))
|
||||
{
|
||||
новые[ключ] = стало;
|
||||
}
|
||||
}
|
||||
return новые;
|
||||
};
|
||||
|
||||
this.разобрать = function(словарь)
|
||||
{
|
||||
this.разобратьВыпрямленный(this.выпрямить(словарь));
|
||||
};
|
||||
|
||||
this.разобратьВыпрямленный = function(выпрямленныйСловарь)
|
||||
{
|
||||
for (var ключ in выпрямленныйСловарь)
|
||||
{
|
||||
let путь = ключ.split(".");
|
||||
let значение = выпрямленныйСловарь[ключ];
|
||||
if (this.обработчик)
|
||||
{
|
||||
this.обработчик(ключ, путь, значение);
|
||||
}
|
||||
this.значения[ключ] = значение;
|
||||
}
|
||||
};
|
||||
|
||||
this.разобратьЛишьНовое = function(словарь)
|
||||
{
|
||||
this.разобратьВыпрямленный(this.лишьНовыеЗначения(this.выпрямить(словарь)));
|
||||
};
|
||||
|
||||
// Конструктор.
|
||||
this.создать();
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
мир.разобрать = function(словарь)
|
||||
{
|
||||
мир.состояние.разобратьЛишьНовое(словарь);
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
../../стороннее/base64-js
|
||||
@@ -1 +0,0 @@
|
||||
../../стороннее/pako
|
||||
Reference in New Issue
Block a user