|
|
@@ -4,9 +4,29 @@ function Редактор(события, имяОбласти) |
|
|
|
{ |
|
|
|
this.установитьAce(); |
|
|
|
this.улавливатьЗавершениеРедактирования(); |
|
|
|
this.разобратьПараметрыЗапуска(); |
|
|
|
this.задатьКодПриЗапуске(); |
|
|
|
события.подписать(this); |
|
|
|
}; |
|
|
|
|
|
|
|
this.задатьКодПриЗапуске = function() |
|
|
|
{ |
|
|
|
var z64 = this.параметрыЗапуска["z64"]; |
|
|
|
if (z64) |
|
|
|
{ |
|
|
|
var код = this.изZ64(z64); |
|
|
|
this.ace.session.setValue(код); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.исполнитьКод = function() |
|
|
|
{ |
|
|
|
var содержимое = this.ace.session.getValue(); |
|
|
|
var z64 = this.вZ64(содержимое); |
|
|
|
var путь = window.location.pathname + "?z64=" + z64; |
|
|
|
history.pushState(null, "", путь); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьСобытие = function(событие) |
|
|
|
{ |
|
|
|
if (событие == "завершили редактирование") |
|
|
@@ -15,17 +35,35 @@ function Редактор(события, имяОбласти) |
|
|
|
} |
|
|
|
else if (событие == "код корректен") |
|
|
|
{ |
|
|
|
this.преобразоватьВZ64(); |
|
|
|
this.исполнитьКод(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.преобразоватьВZ64 = function() |
|
|
|
this.разобратьПараметрыЗапуска = function() |
|
|
|
{ |
|
|
|
var содержимое = this.ace.session.getValue(); |
|
|
|
var в = this.вZ64(содержимое); |
|
|
|
var из = this.изZ64(в); |
|
|
|
/**/console.debug("ИГР вZ64/изZ64/было/стало", в, из, из.length, в.length); |
|
|
|
|
|
|
|
this.параметрыЗапуска = {}; |
|
|
|
var запрос = window.location.search.substring(1); |
|
|
|
var аргументы = запрос.split("&"); |
|
|
|
for (var номер in аргументы) |
|
|
|
{ |
|
|
|
var арг = аргументы[номер]; |
|
|
|
var позицияЗнака = арг.indexOf("="); |
|
|
|
// Лишь ключ. |
|
|
|
if (позицияЗнака == -1) |
|
|
|
{ |
|
|
|
var ключ = decodeURIComponent(арг); |
|
|
|
this.параметрыЗапуска[ключ] = null; |
|
|
|
} |
|
|
|
// Ключ со значением. |
|
|
|
else |
|
|
|
{ |
|
|
|
var сыройКлюч = арг.slice(0, позицияЗнака); |
|
|
|
var сыроеЗначение = арг.slice(позицияЗнака + 1); |
|
|
|
var ключ = decodeURIComponent(сыройКлюч); |
|
|
|
var значение = decodeURIComponent(сыроеЗначение); |
|
|
|
this.параметрыЗапуска[ключ] = значение; |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.установитьAce = function() |
|
|
@@ -33,6 +71,7 @@ function Редактор(события, имяОбласти) |
|
|
|
var область = document.getElementById(имяОбласти); |
|
|
|
this.ace = window.ace.edit(имяОбласти); |
|
|
|
this.ace.session.setMode("ace/mode/javascript"); |
|
|
|
this.ace.session.setUseWrapMode(true); |
|
|
|
} |
|
|
|
|
|
|
|
this.улавливатьЗавершениеРедактирования = function() |
|
|
|