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