diff --git a/пуск|run.js b/пуск|run.js index 55d3c77..d3b1d19 100644 --- a/пуск|run.js +++ b/пуск|run.js @@ -3,7 +3,188 @@ // // // // -ВывестиПриветствиеОтRemoveTyphoon= мир => +Перевести = мир => +{ + var функция = null; + var класс = null; + var одиночка = false; + var свойства = []; + + 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 = ` + + + `; + + мир.ввод = 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"); }; diff --git a/пуск|run.череда b/пуск|run.череда index 59cdd72..f9144bc 100644 --- a/пуск|run.череда +++ b/пуск|run.череда @@ -1,2 +1,7 @@ пуск вывести приветствие от Remove Typhoon + создать окна ввода и вывода + отслеживать обновление окна ввода + задать настройки перевода +обновили окно ввода + перевести \ No newline at end of file