Files
remove-typhoon/пуск|run.js

193 lines
5.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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