Он-лайн редактор кода (Кириллический язык программирования)
Добрый день.
Нужно сделать он-лайн редактор кода (html + js) собственного языка программирования
(Кириллического, похожего на язык 1С).
Должны быть такие возможности:
Подсветка возможных функций языка
Подсветка строки между двойными кавычками
Подсветка чисел
Подсветка комментариев
Нумерация строк
Возможность указания ошибки в строке
Копировать, вырезать, вставить - стандартными горячими клавишами.
Выделение слова двойным кликом
Табуляция (4 пробела)
Автотабуляция для следующей строки
Сворачивание кода по { }
Стандартные комментарии (/* */, //)
Вставка блоков кода из панели возможных функций.
Функциb могут быть вида:
ОКРУГЛ();
или
ЕСЛИ() {
}
После вставки функции курсов позиционировать внутри скобок, если такие имеются.
Код после редактора будет сохраняться в базу данных.
Перед сохранением, он должен быть очищен от разного невидимого
кода разметки обеспечивающего подсветку синтаксиса
Так же должна быть написана функция загрузки кода из БД в редактор.
Возможны будут ещё какие-то незначительные дополнения в ТЗ по мере выполнения проекта,
свойственные для обычных редакторов кода.
Весь програмvный код обильно снабдить комментариями,
что бы в будущем это всё поддавалось редактированию.
Не должно быть программного кода подкачиваемого с внешних ресурсов
Пример кода:
//Сабля
Тип_Замка_Сабли = Параметр["type_lock"];
ЕСЛИ(Тип_Замка_Сабли == 2) {
Тип_Замка_Сабли = 3;
} //У mini хомутов сабли такие же как у norm, norm ближе к норме, поэтому принято за родителя
Артикул_Сабли = "01.11.".Тип_Замка_Сабли.".".Параметр["dlina_homuta"];
Артикул_Шпил = "01.12";
Артикул_Клык = "01.13.".Параметр["type_lock"];
ЕСЛИ(Параметр["type_lock"] == "1") {
Артикул_Сабли .= "-20-3";
Артикул_Шпил .= ".100-".Параметр[1];
Артикул_Клык .= ".55-20";
}
ИНАЧЕ_ЕСЛИ(Параметр["type_lock"] == "4") {
Артикул_Сабли .= "-40-4";
Артикул_Шпил .= ".200-".Параметр[1];
Артикул_Клык .= ".110-24";
}
АРТИКУЛ_В_СПЕЦИФИКАЦИЮ(Артикул_Сабли, 1);
//Клык
АРТИКУЛ_В_СПЕЦИФИКАЦИЮ(Артикул_Клык, Параметр["shpilka_kolvo"] * 2);
ПОСТ_В_СПЕЦИФИКАЦИЮ(1, 5, "Сварка клыков", 0.26+((0.24+0.37)*Параметр["shpilka_kolvo"])); //0.26-устан сабл,съём (0.24+0.37)- устан+сварка одной пары клыков
ПОСТ_В_СПЕЦИФИКАЦИЮ(2, 9, "Зачистка замка обратной стороны", 0.0016*Параметр["dlina_homuta"]); //0.0016-1мм сабли
Наим = "Замок с клыком ".Параметр[1];
ЕСЛИ (Параметр["type_lock"] == 1) { Наим .= " нано"; }
ИНАЧЕ_ЕСЛИ(Параметр["type_lock"] == 2) { Наим .= " мини"; }
ИНАЧЕ_ЕСЛИ(Параметр["type_lock"] == 4) { Наим .= " усил"; }
НАИМЕНОВАНИЕ(Наим);