|
-
-
- // // // //
-
-
- Перевести = мир =>
- {
- var функция = null;
- var класс = null;
- var одиночка = false;
- var свойства = [];
-
- вывод.value = "";
- var строки = ввод.value.split(/\n/);
-
- for (var номер in строки)
- {
- var строка = строки[номер].trim();
- //console.debug("строка", номер, строка);
-
- if (!функция && строка.startsWith(мир.перевод.функция))
- {
- var конец = строка.indexOf("(");
- функция = строка.substring(мир.перевод.функция.length, конец);
- //console.debug("функция", функция);
- }
- else if (!класс && строка.startsWith(мир.перевод.класс))
- {
- класс = строка.substring(мир.перевод.класс.length);
- //console.debug("класс", класс);
- }
- else if (функция && строка.startsWith(мир.перевод.свойство))
- {
- var конец = строка.indexOf(")");
- var название = строка.substring(мир.перевод.свойство.length, конец);
-
- var начало = строка.indexOf(мир.перевод.значение);
- var конецСвойства = строка.indexOf("(", конец + 1);
- if (конецСвойства == -1)
- {
- конецСвойства = строка.indexOf(")", конец + 1);
- }
- var значение = строка.substring(начало + мир.перевод.значение.length, конецСвойства);
- свойства.push({
- "название": название,
- "значение": значение,
- });
- //console.debug("свойство", название, "значение", значение);
- }
- else if (функция && строка.includes(мир.перевод.одиночка))
- {
- одиночка = true;
- }
- else if (функция && строка == "}")
- {
- var экземпляр = "instance";
- if (одиночка)
- {
- экземпляр = "_" + класс;
- }
- var содержимое = "";
- for (var номер in свойства)
- {
- var свойство = свойства[номер];
- содержимое += ` ${экземпляр}.${свойство.название} = ${свойство.значение}()\n`;
- }
- if (!одиночка)
- {
- вывод.value += `
-
- func ${функция}() -> ${класс} {
- let ${экземпляр} = ${класс}()
- ${содержимое}
- return ${экземпляр}
- }
-
- `;
- }
- else
- {
- вывод.value += `
-
- private var ${экземпляр}: ${класс}!
-
- func ${функция}() -> ${класс} {
- if let ${экземпляр} = ${экземпляр} {
- return ${экземпляр}
- }
-
- ${экземпляр} = ${класс}()
- ${содержимое}
- return ${экземпляр}
- }
-
- `;
- }
- функция = null;
- класс = null;
- одиночка = false;
- свойства = [];
- }
- }
- };
-
-
- // // // //
-
-
- ЗадатьНастройкиПеревода = мир =>
- {
- мир.перевод = {
- "функция": "dynamic func ",
- "класс": "typealias Class = ",
- "свойство": "definition?.injectProperty(#selector(getter: Class.",
- "значение": "with: ",
- "одиночка": "scope",
- };
- };
-
-
- // // // //
-
-
- Продублировать = мир =>
- {
- вывод.value = ввод.value;
- };
-
-
- // // // //
-
-
- ОтслеживатьОбновлениеОкнаВвода = мир =>
- {
- ввод.addEventListener(
- "input",
- function() {
- мир.уведомить("обновили окно ввода");
- },
- false
- );
- };
-
-
- // // // //
-
-
- СоздатьОкнаВводаИВывода = мир =>
- {
- document.body.innerHTML = `
- <textarea id="ввод"></textarea>
- <textarea id="вывод"></textarea>
- `;
-
- мир.ввод = document.getElementById("ввод");
- мир.вывод = document.getElementById("вывод");
-
- var вид = document.createElement("style");
- document.head.appendChild(вид);
- вид.innerHTML = `
- #ввод
- {
- position: fixed;
- left: 0;
- width: 50%;
- height: 100%;
- top: 0;
- bottom: 0;
- }
- #вывод
- {
- position: fixed;
- right: 0;
- width: 50%;
- height: 100%;
- top: 0;
- bottom: 0;
- }
- `;
-
- };
-
-
-
- // // // //
-
-
- ВывестиПриветствиеОтRemoveTyphoon = мир =>
- {
- console.debug("Привет от Remove Typhoon");
- };
|