|
- function Редактор(события, имяРедактора, имяВоспроизведения)
- {
- this.создать = function()
- {
- this.установитьAce();
- this.улавливатьЗавершениеРедактирования();
- this.пз = new ПараметрыЗапуска();
- this.задатьКодПриЗапуске();
- события.подписать(this);
- };
-
- this.задатьКодПриЗапуске = function()
- {
- var z64 = this.пз.параметры["z64"];
- if (z64)
- {
- var код = изZ64(z64);
- this.ace.session.setValue(код);
- }
- };
-
- this.исполнитьКод = function()
- {
- var содержимое = this.ace.session.getValue();
- var z64 = вZ64(содержимое);
- var путь = window.location.pathname + "?z64=" + z64;
- history.pushState(null, "", путь);
-
- var воспроизведение = document.getElementById("воспроизведение");
- var адрес = "../проигрыватель/index.html?z64=" + z64;
- воспроизведение.src = адрес;
- };
-
- this.обработатьСобытие = function(событие)
- {
- if (событие == "завершили редактирование")
- {
- this.проверитьКорректностьКода();
- }
- else if (событие == "код корректен")
- {
- this.исполнитьКод();
- }
- };
-
-
- this.установитьAce = function()
- {
- var область = document.getElementById(имяРедактора);
- this.ace = window.ace.edit(имяРедактора);
- this.ace.session.setMode("ace/mode/javascript");
- this.ace.session.setUseWrapMode(true);
- }
-
- this.улавливатьЗавершениеРедактирования = function()
- {
- var тут = this;
- this.ace.session.on("change", function(дельта) {
- const билет = uuid();
- тут.билет = билет;
- setTimeout(
- function()
- {
- if (билет == тут.билет)
- {
- события.уведомить("завершили редактирование");
- }
- },
- 1000
- );
- });
- };
-
- this.проверитьКорректностьКода = function()
- {
- try
- {
- eval(this.ace.session.getValue());
- события.уведомить("код корректен");
- }
- catch (ошибка)
- {
- события.уведомить("код некорректен");
- }
- };
-
- // Конструктор.
- this.создать();
- }
|