// // // // Перевести = мир => { 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 = ` `; мир.ввод = 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"); };