forked from jasder/antlr
1079 lines
44 KiB
JavaScript
1079 lines
44 KiB
JavaScript
"no use strict";
|
||
(function(e) {
|
||
if (typeof e.window != "undefined" && e.document) return;
|
||
e.console = function() {
|
||
var e = Array.prototype.slice.call(arguments, 0);
|
||
postMessage({
|
||
type: "log",
|
||
data: e
|
||
})
|
||
}, e.console.error = e.console.warn = e.console.log = e.console.trace = e.console, e.window = e, e.ace = e, e.onerror = function(e, t, n, r, i) {
|
||
postMessage({
|
||
type: "error",
|
||
data: {
|
||
message: e,
|
||
file: t,
|
||
line: n,
|
||
col: r,
|
||
stack: i.stack
|
||
}
|
||
})
|
||
}, e.normalizeModule = function(t, n) {
|
||
if (n.indexOf("!") !== -1) {
|
||
var r = n.split("!");
|
||
return e.normalizeModule(t, r[0]) + "!" + e.normalizeModule(t, r[1])
|
||
}
|
||
if (n.charAt(0) == ".") {
|
||
var i = t.split("/")
|
||
.slice(0, -1)
|
||
.join("/");
|
||
n = (i ? i + "/" : "") + n;
|
||
while (n.indexOf(".") !== -1 && s != n) {
|
||
var s = n;
|
||
n = n.replace(/^\.\//, "")
|
||
.replace(/\/\.\//, "/")
|
||
.replace(/[^\/]+\/\.\.\//, "")
|
||
}
|
||
}
|
||
return n
|
||
}, e.require = function(t, n) {
|
||
n || (n = t, t = null);
|
||
if (!n.charAt) throw new Error("worker.js require() accepts only (parentId, id) as arguments");
|
||
n = e.normalizeModule(t, n);
|
||
var r = e.require.modules[n];
|
||
if (r) return r.initialized || (r.initialized = !0, r.exports = r.factory()
|
||
.exports), r.exports;
|
||
var i = n.split("/");
|
||
if (!e.require.tlns) return console.log("unable to load " + n);
|
||
i[0] = e.require.tlns[i[0]] || i[0];
|
||
var s = i.join("/") + ".js";
|
||
return e.require.id = n, importScripts(s), e.require(t, n)
|
||
}, e.require.modules = {}, e.require.tlns = {}, e.define = function(t, n, r) {
|
||
arguments.length == 2 ? (r = n, typeof t != "string" && (n = t, t = e.require.id)) : arguments.length == 1 && (r = t, n = [], t = e.require.id);
|
||
if (typeof r != "function") {
|
||
e.require.modules[t] = {
|
||
exports: r,
|
||
initialized: !0
|
||
};
|
||
return
|
||
}
|
||
n.length || (n = ["require", "exports", "module"]);
|
||
var i = function(n) {
|
||
return e.require(t, n)
|
||
};
|
||
e.require.modules[t] = {
|
||
exports: {},
|
||
factory: function() {
|
||
var e = this,
|
||
t = r.apply(this, n.map(function(t) {
|
||
switch (t) {
|
||
case "require":
|
||
return i;
|
||
case "exports":
|
||
return e.exports;
|
||
case "module":
|
||
return e;
|
||
default:
|
||
return i(t)
|
||
}
|
||
}));
|
||
return t && (e.exports = t), e
|
||
}
|
||
}
|
||
}, e.define.amd = {}, e.initBaseUrls = function(t) {
|
||
require.tlns = t
|
||
}, e.initSender = function() {
|
||
var n = e.require("ace/lib/event_emitter")
|
||
.EventEmitter,
|
||
r = e.require("ace/lib/oop"),
|
||
i = function() {};
|
||
return function() {
|
||
r.implement(this, n), this.callback = function(e, t) {
|
||
postMessage({
|
||
type: "call",
|
||
id: t,
|
||
data: e
|
||
})
|
||
}, this.emit = function(e, t) {
|
||
postMessage({
|
||
type: "event",
|
||
name: e,
|
||
data: t
|
||
})
|
||
}
|
||
}.call(i.prototype), new i
|
||
};
|
||
var t = e.main = null,
|
||
n = e.sender = null;
|
||
e.onmessage = function(r) {
|
||
var i = r.data;
|
||
if (i.command) {
|
||
if (!t[i.command]) throw new Error("Unknown command:" + i.command);
|
||
t[i.command].apply(t, i.args)
|
||
} else if (i.init) {
|
||
initBaseUrls(i.tlns), require("ace/lib/es5-shim"), n = e.sender = initSender();
|
||
var s = require(i.module)[i.classname];
|
||
t = e.main = new s(n)
|
||
} else i.event && n && n._signal(i.event, i.data)
|
||
}
|
||
})(this), ace.define("ace/lib/oop", ["require", "exports", "module"], function(e, t, n) {
|
||
"use strict";
|
||
t.inherits = function(e, t) {
|
||
e.super_ = t, e.prototype = Object.create(t.prototype, {
|
||
constructor: {
|
||
value: e,
|
||
enumerable: !1,
|
||
writable: !0,
|
||
configurable: !0
|
||
}
|
||
})
|
||
}, t.mixin = function(e, t) {
|
||
for (var n in t) e[n] = t[n];
|
||
return e
|
||
}, t.implement = function(e, n) {
|
||
t.mixin(e, n)
|
||
}
|
||
}), ace.define("ace/lib/event_emitter", ["require", "exports", "module"], function(e, t, n) {
|
||
"use strict";
|
||
var r = {},
|
||
i = function() {
|
||
this.propagationStopped = !0
|
||
},
|
||
s = function() {
|
||
this.defaultPrevented = !0
|
||
};
|
||
r._emit = r._dispatchEvent = function(e, t) {
|
||
this._eventRegistry || (this._eventRegistry = {}), this._defaultHandlers || (this._defaultHandlers = {});
|
||
var n = this._eventRegistry[e] || [],
|
||
r = this._defaultHandlers[e];
|
||
if (!n.length && !r) return;
|
||
if (typeof t != "object" || !t) t = {};
|
||
t.type || (t.type = e), t.stopPropagation || (t.stopPropagation = i), t.preventDefault || (t.preventDefault = s), n = n.slice();
|
||
for (var o = 0; o < n.length; o++) {
|
||
n[o](t, this);
|
||
if (t.propagationStopped) break
|
||
}
|
||
if (r && !t.defaultPrevented) return r(t, this)
|
||
}, r._signal = function(e, t) {
|
||
var n = (this._eventRegistry || {})[e];
|
||
if (!n) return;
|
||
n = n.slice();
|
||
for (var r = 0; r < n.length; r++) n[r](t, this)
|
||
}, r.once = function(e, t) {
|
||
var n = this;
|
||
t && this.addEventListener(e, function r() {
|
||
n.removeEventListener(e, r), t.apply(null, arguments)
|
||
})
|
||
}, r.setDefaultHandler = function(e, t) {
|
||
var n = this._defaultHandlers;
|
||
n || (n = this._defaultHandlers = {
|
||
_disabled_: {}
|
||
});
|
||
if (n[e]) {
|
||
var r = n[e],
|
||
i = n._disabled_[e];
|
||
i || (n._disabled_[e] = i = []), i.push(r);
|
||
var s = i.indexOf(t);
|
||
s != -1 && i.splice(s, 1)
|
||
}
|
||
n[e] = t
|
||
}, r.removeDefaultHandler = function(e, t) {
|
||
var n = this._defaultHandlers;
|
||
if (!n) return;
|
||
var r = n._disabled_[e];
|
||
if (n[e] == t) {
|
||
var i = n[e];
|
||
r && this.setDefaultHandler(e, r.pop())
|
||
} else if (r) {
|
||
var s = r.indexOf(t);
|
||
s != -1 && r.splice(s, 1)
|
||
}
|
||
}, r.on = r.addEventListener = function(e, t, n) {
|
||
this._eventRegistry = this._eventRegistry || {};
|
||
var r = this._eventRegistry[e];
|
||
return r || (r = this._eventRegistry[e] = []), r.indexOf(t) == -1 && r[n ? "unshift" : "push"](t), t
|
||
}, r.off = r.removeListener = r.removeEventListener = function(e, t) {
|
||
this._eventRegistry = this._eventRegistry || {};
|
||
var n = this._eventRegistry[e];
|
||
if (!n) return;
|
||
var r = n.indexOf(t);
|
||
r !== -1 && n.splice(r, 1)
|
||
}, r.removeAllListeners = function(e) {
|
||
this._eventRegistry && (this._eventRegistry[e] = [])
|
||
}, t.EventEmitter = r
|
||
}), ace.define("ace/range", ["require", "exports", "module"], function(e, t, n) {
|
||
"use strict";
|
||
var r = function(e, t) {
|
||
return e.row - t.row || e.column - t.column
|
||
},
|
||
i = function(e, t, n, r) {
|
||
this.start = {
|
||
row: e,
|
||
column: t
|
||
}, this.end = {
|
||
row: n,
|
||
column: r
|
||
}
|
||
};
|
||
(function() {
|
||
this.isEqual = function(e) {
|
||
return this.start.row === e.start.row && this.end.row === e.end.row && this.start.column === e.start.column && this.end.column === e.end.column
|
||
}, this.toString = function() {
|
||
return "Range: [" + this.start.row + "/" + this.start.column + "] -> [" + this.end.row + "/" + this.end.column + "]"
|
||
}, this.contains = function(e, t) {
|
||
return this.compare(e, t) == 0
|
||
}, this.compareRange = function(e) {
|
||
var t, n = e.end,
|
||
r = e.start;
|
||
return t = this.compare(n.row, n.column), t == 1 ? (t = this.compare(r.row, r.column), t == 1 ? 2 : t == 0 ? 1 : 0) : t == -1 ? -2 : (t = this.compare(r.row, r.column), t == -1 ? -1 : t == 1 ? 42 : 0)
|
||
}, this.comparePoint = function(e) {
|
||
return this.compare(e.row, e.column)
|
||
}, this.containsRange = function(e) {
|
||
return this.comparePoint(e.start) == 0 && this.comparePoint(e.end) == 0
|
||
}, this.intersects = function(e) {
|
||
var t = this.compareRange(e);
|
||
return t == -1 || t == 0 || t == 1
|
||
}, this.isEnd = function(e, t) {
|
||
return this.end.row == e && this.end.column == t
|
||
}, this.isStart = function(e, t) {
|
||
return this.start.row == e && this.start.column == t
|
||
}, this.setStart = function(e, t) {
|
||
typeof e == "object" ? (this.start.column = e.column, this.start.row = e.row) : (this.start.row = e, this.start.column = t)
|
||
}, this.setEnd = function(e, t) {
|
||
typeof e == "object" ? (this.end.column = e.column, this.end.row = e.row) : (this.end.row = e, this.end.column = t)
|
||
}, this.inside = function(e, t) {
|
||
return this.compare(e, t) == 0 ? this.isEnd(e, t) || this.isStart(e, t) ? !1 : !0 : !1
|
||
}, this.insideStart = function(e, t) {
|
||
return this.compare(e, t) == 0 ? this.isEnd(e, t) ? !1 : !0 : !1
|
||
}, this.insideEnd = function(e, t) {
|
||
return this.compare(e, t) == 0 ? this.isStart(e, t) ? !1 : !0 : !1
|
||
}, this.compare = function(e, t) {
|
||
return !this.isMultiLine() && e === this.start.row ? t < this.start.column ? -1 : t > this.end.column ? 1 : 0 : e < this.start.row ? -1 : e > this.end.row ? 1 : this.start.row === e ? t >= this.start.column ? 0 : -1 : this.end.row === e ? t <= this.end.column ? 0 : 1 : 0
|
||
}, this.compareStart = function(e, t) {
|
||
return this.start.row == e && this.start.column == t ? -1 : this.compare(e, t)
|
||
}, this.compareEnd = function(e, t) {
|
||
return this.end.row == e && this.end.column == t ? 1 : this.compare(e, t)
|
||
}, this.compareInside = function(e, t) {
|
||
return this.end.row == e && this.end.column == t ? 1 : this.start.row == e && this.start.column == t ? -1 : this.compare(e, t)
|
||
}, this.clipRows = function(e, t) {
|
||
if (this.end.row > t) var n = {
|
||
row: t + 1,
|
||
column: 0
|
||
};
|
||
else if (this.end.row < e) var n = {
|
||
row: e,
|
||
column: 0
|
||
};
|
||
if (this.start.row > t) var r = {
|
||
row: t + 1,
|
||
column: 0
|
||
};
|
||
else if (this.start.row < e) var r = {
|
||
row: e,
|
||
column: 0
|
||
};
|
||
return i.fromPoints(r || this.start, n || this.end)
|
||
}, this.extend = function(e, t) {
|
||
var n = this.compare(e, t);
|
||
if (n == 0) return this;
|
||
if (n == -1) var r = {
|
||
row: e,
|
||
column: t
|
||
};
|
||
else var s = {
|
||
row: e,
|
||
column: t
|
||
};
|
||
return i.fromPoints(r || this.start, s || this.end)
|
||
}, this.isEmpty = function() {
|
||
return this.start.row === this.end.row && this.start.column === this.end.column
|
||
}, this.isMultiLine = function() {
|
||
return this.start.row !== this.end.row
|
||
}, this.clone = function() {
|
||
return i.fromPoints(this.start, this.end)
|
||
}, this.collapseRows = function() {
|
||
return this.end.column == 0 ? new i(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0) : new i(this.start.row, 0, this.end.row, 0)
|
||
}, this.toScreenRange = function(e) {
|
||
var t = e.documentToScreenPosition(this.start),
|
||
n = e.documentToScreenPosition(this.end);
|
||
return new i(t.row, t.column, n.row, n.column)
|
||
}, this.moveBy = function(e, t) {
|
||
this.start.row += e, this.start.column += t, this.end.row += e, this.end.column += t
|
||
}
|
||
})
|
||
.call(i.prototype), i.fromPoints = function(e, t) {
|
||
return new i(e.row, e.column, t.row, t.column)
|
||
}, i.comparePoints = r, i.comparePoints = function(e, t) {
|
||
return e.row - t.row || e.column - t.column
|
||
}, t.Range = i
|
||
}), ace.define("ace/anchor", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], function(e, t, n) {
|
||
"use strict";
|
||
var r = e("./lib/oop"),
|
||
i = e("./lib/event_emitter")
|
||
.EventEmitter,
|
||
s = t.Anchor = function(e, t, n) {
|
||
this.$onChange = this.onChange.bind(this), this.attach(e), typeof n == "undefined" ? this.setPosition(t.row, t.column) : this.setPosition(t, n)
|
||
};
|
||
(function() {
|
||
r.implement(this, i), this.getPosition = function() {
|
||
return this.$clipPositionToDocument(this.row, this.column)
|
||
}, this.getDocument = function() {
|
||
return this.document
|
||
}, this.$insertRight = !1, this.onChange = function(e) {
|
||
var t = e.data,
|
||
n = t.range;
|
||
if (n.start.row == n.end.row && n.start.row != this.row) return;
|
||
if (n.start.row > this.row) return;
|
||
if (n.start.row == this.row && n.start.column > this.column) return;
|
||
var r = this.row,
|
||
i = this.column,
|
||
s = n.start,
|
||
o = n.end;
|
||
if (t.action === "insertText")
|
||
if (s.row === r && s.column <= i) {
|
||
if (s.column !== i || !this.$insertRight) s.row === o.row ? i += o.column - s.column : (i -= s.column, r += o.row - s.row)
|
||
} else s.row !== o.row && s.row < r && (r += o.row - s.row);
|
||
else t.action === "insertLines" ? (s.row !== r || i !== 0 || !this.$insertRight) && s.row <= r && (r += o.row - s.row) : t.action === "removeText" ? s.row === r && s.column < i ? o.column >= i ? i = s.column : i = Math.max(0, i - (o.column - s.column)) : s.row !== o.row && s.row < r ? (o.row === r && (i = Math.max(0, i - o.column) + s.column), r -= o.row - s.row) : o.row === r && (r -= o.row - s.row, i = Math.max(0, i - o.column) + s.column) : t.action == "removeLines" && s.row <= r && (o.row <= r ? r -= o.row - s.row : (r = s.row, i = 0));
|
||
this.setPosition(r, i, !0)
|
||
}, this.setPosition = function(e, t, n) {
|
||
var r;
|
||
n ? r = {
|
||
row: e,
|
||
column: t
|
||
} : r = this.$clipPositionToDocument(e, t);
|
||
if (this.row == r.row && this.column == r.column) return;
|
||
var i = {
|
||
row: this.row,
|
||
column: this.column
|
||
};
|
||
this.row = r.row, this.column = r.column, this._signal("change", {
|
||
old: i,
|
||
value: r
|
||
})
|
||
}, this.detach = function() {
|
||
this.document.removeEventListener("change", this.$onChange)
|
||
}, this.attach = function(e) {
|
||
this.document = e || this.document, this.document.on("change", this.$onChange)
|
||
}, this.$clipPositionToDocument = function(e, t) {
|
||
var n = {};
|
||
return e >= this.document.getLength() ? (n.row = Math.max(0, this.document.getLength() - 1), n.column = this.document.getLine(n.row)
|
||
.length) : e < 0 ? (n.row = 0, n.column = 0) : (n.row = e, n.column = Math.min(this.document.getLine(n.row)
|
||
.length, Math.max(0, t))), t < 0 && (n.column = 0), n
|
||
}
|
||
})
|
||
.call(s.prototype)
|
||
}), ace.define("ace/document", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter", "ace/range", "ace/anchor"], function(e, t, n) {
|
||
"use strict";
|
||
var r = e("./lib/oop"),
|
||
i = e("./lib/event_emitter")
|
||
.EventEmitter,
|
||
s = e("./range")
|
||
.Range,
|
||
o = e("./anchor")
|
||
.Anchor,
|
||
u = function(e) {
|
||
this.$lines = [], e.length === 0 ? this.$lines = [""] : Array.isArray(e) ? this._insertLines(0, e) : this.insert({
|
||
row: 0,
|
||
column: 0
|
||
}, e)
|
||
};
|
||
(function() {
|
||
r.implement(this, i), this.setValue = function(e) {
|
||
var t = this.getLength();
|
||
this.remove(new s(0, 0, t, this.getLine(t - 1)
|
||
.length)), this.insert({
|
||
row: 0,
|
||
column: 0
|
||
}, e)
|
||
}, this.getValue = function() {
|
||
return this.getAllLines()
|
||
.join(this.getNewLineCharacter())
|
||
}, this.createAnchor = function(e, t) {
|
||
return new o(this, e, t)
|
||
}, "aaa".split(/a/)
|
||
.length === 0 ? this.$split = function(e) {
|
||
return e.replace(/\r\n|\r/g, "\n")
|
||
.split("\n")
|
||
} : this.$split = function(e) {
|
||
return e.split(/\r\n|\r|\n/)
|
||
}, this.$detectNewLine = function(e) {
|
||
var t = e.match(/^.*?(\r\n|\r|\n)/m);
|
||
this.$autoNewLine = t ? t[1] : "\n", this._signal("changeNewLineMode")
|
||
}, this.getNewLineCharacter = function() {
|
||
switch (this.$newLineMode) {
|
||
case "windows":
|
||
return "\r\n";
|
||
case "unix":
|
||
return "\n";
|
||
default:
|
||
return this.$autoNewLine || "\n"
|
||
}
|
||
}, this.$autoNewLine = "", this.$newLineMode = "auto", this.setNewLineMode = function(e) {
|
||
if (this.$newLineMode === e) return;
|
||
this.$newLineMode = e, this._signal("changeNewLineMode")
|
||
}, this.getNewLineMode = function() {
|
||
return this.$newLineMode
|
||
}, this.isNewLine = function(e) {
|
||
return e == "\r\n" || e == "\r" || e == "\n"
|
||
}, this.getLine = function(e) {
|
||
return this.$lines[e] || ""
|
||
}, this.getLines = function(e, t) {
|
||
return this.$lines.slice(e, t + 1)
|
||
}, this.getAllLines = function() {
|
||
return this.getLines(0, this.getLength())
|
||
}, this.getLength = function() {
|
||
return this.$lines.length
|
||
}, this.getTextRange = function(e) {
|
||
if (e.start.row == e.end.row) return this.getLine(e.start.row)
|
||
.substring(e.start.column, e.end.column);
|
||
var t = this.getLines(e.start.row, e.end.row);
|
||
t[0] = (t[0] || "")
|
||
.substring(e.start.column);
|
||
var n = t.length - 1;
|
||
return e.end.row - e.start.row == n && (t[n] = t[n].substring(0, e.end.column)), t.join(this.getNewLineCharacter())
|
||
}, this.$clipPosition = function(e) {
|
||
var t = this.getLength();
|
||
return e.row >= t ? (e.row = Math.max(0, t - 1), e.column = this.getLine(t - 1)
|
||
.length) : e.row < 0 && (e.row = 0), e
|
||
}, this.insert = function(e, t) {
|
||
if (!t || t.length === 0) return e;
|
||
e = this.$clipPosition(e), this.getLength() <= 1 && this.$detectNewLine(t);
|
||
var n = this.$split(t),
|
||
r = n.splice(0, 1)[0],
|
||
i = n.length == 0 ? null : n.splice(n.length - 1, 1)[0];
|
||
return e = this.insertInLine(e, r), i !== null && (e = this.insertNewLine(e), e = this._insertLines(e.row, n), e = this.insertInLine(e, i || "")), e
|
||
}, this.insertLines = function(e, t) {
|
||
return e >= this.getLength() ? this.insert({
|
||
row: e,
|
||
column: 0
|
||
}, "\n" + t.join("\n")) : this._insertLines(Math.max(e, 0), t)
|
||
}, this._insertLines = function(e, t) {
|
||
if (t.length == 0) return {
|
||
row: e,
|
||
column: 0
|
||
};
|
||
while (t.length > 2e4) {
|
||
var n = this._insertLines(e, t.slice(0, 2e4));
|
||
t = t.slice(2e4), e = n.row
|
||
}
|
||
var r = [e, 0];
|
||
r.push.apply(r, t), this.$lines.splice.apply(this.$lines, r);
|
||
var i = new s(e, 0, e + t.length, 0),
|
||
o = {
|
||
action: "insertLines",
|
||
range: i,
|
||
lines: t
|
||
};
|
||
return this._signal("change", {
|
||
data: o
|
||
}), i.end
|
||
}, this.insertNewLine = function(e) {
|
||
e = this.$clipPosition(e);
|
||
var t = this.$lines[e.row] || "";
|
||
this.$lines[e.row] = t.substring(0, e.column), this.$lines.splice(e.row + 1, 0, t.substring(e.column, t.length));
|
||
var n = {
|
||
row: e.row + 1,
|
||
column: 0
|
||
},
|
||
r = {
|
||
action: "insertText",
|
||
range: s.fromPoints(e, n),
|
||
text: this.getNewLineCharacter()
|
||
};
|
||
return this._signal("change", {
|
||
data: r
|
||
}), n
|
||
}, this.insertInLine = function(e, t) {
|
||
if (t.length == 0) return e;
|
||
var n = this.$lines[e.row] || "";
|
||
this.$lines[e.row] = n.substring(0, e.column) + t + n.substring(e.column);
|
||
var r = {
|
||
row: e.row,
|
||
column: e.column + t.length
|
||
},
|
||
i = {
|
||
action: "insertText",
|
||
range: s.fromPoints(e, r),
|
||
text: t
|
||
};
|
||
return this._signal("change", {
|
||
data: i
|
||
}), r
|
||
}, this.remove = function(e) {
|
||
e instanceof s || (e = s.fromPoints(e.start, e.end)), e.start = this.$clipPosition(e.start), e.end = this.$clipPosition(e.end);
|
||
if (e.isEmpty()) return e.start;
|
||
var t = e.start.row,
|
||
n = e.end.row;
|
||
if (e.isMultiLine()) {
|
||
var r = e.start.column == 0 ? t : t + 1,
|
||
i = n - 1;
|
||
e.end.column > 0 && this.removeInLine(n, 0, e.end.column), i >= r && this._removeLines(r, i), r != t && (this.removeInLine(t, e.start.column, this.getLine(t)
|
||
.length), this.removeNewLine(e.start.row))
|
||
} else this.removeInLine(t, e.start.column, e.end.column);
|
||
return e.start
|
||
}, this.removeInLine = function(e, t, n) {
|
||
if (t == n) return;
|
||
var r = new s(e, t, e, n),
|
||
i = this.getLine(e),
|
||
o = i.substring(t, n),
|
||
u = i.substring(0, t) + i.substring(n, i.length);
|
||
this.$lines.splice(e, 1, u);
|
||
var a = {
|
||
action: "removeText",
|
||
range: r,
|
||
text: o
|
||
};
|
||
return this._signal("change", {
|
||
data: a
|
||
}), r.start
|
||
}, this.removeLines = function(e, t) {
|
||
return e < 0 || t >= this.getLength() ? this.remove(new s(e, 0, t + 1, 0)) : this._removeLines(e, t)
|
||
}, this._removeLines = function(e, t) {
|
||
var n = new s(e, 0, t + 1, 0),
|
||
r = this.$lines.splice(e, t - e + 1),
|
||
i = {
|
||
action: "removeLines",
|
||
range: n,
|
||
nl: this.getNewLineCharacter(),
|
||
lines: r
|
||
};
|
||
return this._signal("change", {
|
||
data: i
|
||
}), r
|
||
}, this.removeNewLine = function(e) {
|
||
var t = this.getLine(e),
|
||
n = this.getLine(e + 1),
|
||
r = new s(e, t.length, e + 1, 0),
|
||
i = t + n;
|
||
this.$lines.splice(e, 2, i);
|
||
var o = {
|
||
action: "removeText",
|
||
range: r,
|
||
text: this.getNewLineCharacter()
|
||
};
|
||
this._signal("change", {
|
||
data: o
|
||
})
|
||
}, this.replace = function(e, t) {
|
||
e instanceof s || (e = s.fromPoints(e.start, e.end));
|
||
if (t.length == 0 && e.isEmpty()) return e.start;
|
||
if (t == this.getTextRange(e)) return e.end;
|
||
this.remove(e);
|
||
if (t) var n = this.insert(e.start, t);
|
||
else n = e.start;
|
||
return n
|
||
}, this.applyDeltas = function(e) {
|
||
for (var t = 0; t < e.length; t++) {
|
||
var n = e[t],
|
||
r = s.fromPoints(n.range.start, n.range.end);
|
||
n.action == "insertLines" ? this.insertLines(r.start.row, n.lines) : n.action == "insertText" ? this.insert(r.start, n.text) : n.action == "removeLines" ? this._removeLines(r.start.row, r.end.row - 1) : n.action == "removeText" && this.remove(r)
|
||
}
|
||
}, this.revertDeltas = function(e) {
|
||
for (var t = e.length - 1; t >= 0; t--) {
|
||
var n = e[t],
|
||
r = s.fromPoints(n.range.start, n.range.end);
|
||
n.action == "insertLines" ? this._removeLines(r.start.row, r.end.row - 1) : n.action == "insertText" ? this.remove(r) : n.action == "removeLines" ? this._insertLines(r.start.row, n.lines) : n.action == "removeText" && this.insert(r.start, n.text)
|
||
}
|
||
}, this.indexToPosition = function(e, t) {
|
||
var n = this.$lines || this.getAllLines(),
|
||
r = this.getNewLineCharacter()
|
||
.length;
|
||
for (var i = t || 0, s = n.length; i < s; i++) {
|
||
e -= n[i].length + r;
|
||
if (e < 0) return {
|
||
row: i,
|
||
column: e + n[i].length + r
|
||
}
|
||
}
|
||
return {
|
||
row: s - 1,
|
||
column: n[s - 1].length
|
||
}
|
||
}, this.positionToIndex = function(e, t) {
|
||
var n = this.$lines || this.getAllLines(),
|
||
r = this.getNewLineCharacter()
|
||
.length,
|
||
i = 0,
|
||
s = Math.min(e.row, n.length);
|
||
for (var o = t || 0; o < s; ++o) i += n[o].length + r;
|
||
return i + e.column
|
||
}
|
||
})
|
||
.call(u.prototype), t.Document = u
|
||
}), ace.define("ace/lib/lang", ["require", "exports", "module"], function(e, t, n) {
|
||
"use strict";
|
||
t.last = function(e) {
|
||
return e[e.length - 1]
|
||
}, t.stringReverse = function(e) {
|
||
return e.split("")
|
||
.reverse()
|
||
.join("")
|
||
}, t.stringRepeat = function(e, t) {
|
||
var n = "";
|
||
while (t > 0) {
|
||
t & 1 && (n += e);
|
||
if (t >>= 1) e += e
|
||
}
|
||
return n
|
||
};
|
||
var r = /^\s\s*/,
|
||
i = /\s\s*$/;
|
||
t.stringTrimLeft = function(e) {
|
||
return e.replace(r, "")
|
||
}, t.stringTrimRight = function(e) {
|
||
return e.replace(i, "")
|
||
}, t.copyObject = function(e) {
|
||
var t = {};
|
||
for (var n in e) t[n] = e[n];
|
||
return t
|
||
}, t.copyArray = function(e) {
|
||
var t = [];
|
||
for (var n = 0, r = e.length; n < r; n++) e[n] && typeof e[n] == "object" ? t[n] = this.copyObject(e[n]) : t[n] = e[n];
|
||
return t
|
||
}, t.deepCopy = function s(e) {
|
||
if (typeof e != "object" || !e) return e;
|
||
var t;
|
||
if (Array.isArray(e)) {
|
||
t = [];
|
||
for (var n = 0; n < e.length; n++) t[n] = s(e[n]);
|
||
return t
|
||
}
|
||
var r = e.constructor;
|
||
if (r === RegExp) return e;
|
||
t = r();
|
||
for (var n in e) t[n] = s(e[n]);
|
||
return t
|
||
}, t.arrayToMap = function(e) {
|
||
var t = {};
|
||
for (var n = 0; n < e.length; n++) t[e[n]] = 1;
|
||
return t
|
||
}, t.createMap = function(e) {
|
||
var t = Object.create(null);
|
||
for (var n in e) t[n] = e[n];
|
||
return t
|
||
}, t.arrayRemove = function(e, t) {
|
||
for (var n = 0; n <= e.length; n++) t === e[n] && e.splice(n, 1)
|
||
}, t.escapeRegExp = function(e) {
|
||
return e.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1")
|
||
}, t.escapeHTML = function(e) {
|
||
return e.replace(/&/g, "&")
|
||
.replace(/"/g, """)
|
||
.replace(/'/g, "'")
|
||
.replace(/</g, "<")
|
||
}, t.getMatchOffsets = function(e, t) {
|
||
var n = [];
|
||
return e.replace(t, function(e) {
|
||
n.push({
|
||
offset: arguments[arguments.length - 2],
|
||
length: e.length
|
||
})
|
||
}), n
|
||
}, t.deferredCall = function(e) {
|
||
var t = null,
|
||
n = function() {
|
||
t = null, e()
|
||
},
|
||
r = function(e) {
|
||
return r.cancel(), t = setTimeout(n, e || 0), r
|
||
};
|
||
return r.schedule = r, r.call = function() {
|
||
return this.cancel(), e(), r
|
||
}, r.cancel = function() {
|
||
return clearTimeout(t), t = null, r
|
||
}, r.isPending = function() {
|
||
return t
|
||
}, r
|
||
}, t.delayedCall = function(e, t) {
|
||
var n = null,
|
||
r = function() {
|
||
n = null, e()
|
||
},
|
||
i = function(e) {
|
||
n == null && (n = setTimeout(r, e || t))
|
||
};
|
||
return i.delay = function(e) {
|
||
n && clearTimeout(n), n = setTimeout(r, e || t)
|
||
}, i.schedule = i, i.call = function() {
|
||
this.cancel(), e()
|
||
}, i.cancel = function() {
|
||
n && clearTimeout(n), n = null
|
||
}, i.isPending = function() {
|
||
return n
|
||
}, i
|
||
}
|
||
}), ace.define("ace/worker/mirror", ["require", "exports", "module", "ace/document", "ace/lib/lang"], function(e, t, n) {
|
||
"use strict";
|
||
var r = e("../document")
|
||
.Document,
|
||
i = e("../lib/lang"),
|
||
s = t.Mirror = function(e) {
|
||
this.sender = e;
|
||
var t = this.doc = new r(""),
|
||
n = this.deferredUpdate = i.delayedCall(this.onUpdate.bind(this)),
|
||
s = this;
|
||
e.on("change", function(e) {
|
||
t.applyDeltas(e.data);
|
||
if (s.$timeout) return n.schedule(s.$timeout);
|
||
s.onUpdate()
|
||
})
|
||
};
|
||
(function() {
|
||
this.$timeout = 500, this.setTimeout = function(e) {
|
||
this.$timeout = e
|
||
}, this.setValue = function(e) {
|
||
this.doc.setValue(e), this.deferredUpdate.schedule(this.$timeout)
|
||
}, this.getValue = function(e) {
|
||
this.sender.callback(this.doc.getValue(), e)
|
||
}, this.onUpdate = function() {}, this.isPending = function() {
|
||
return this.deferredUpdate.isPending()
|
||
}
|
||
})
|
||
.call(s.prototype)
|
||
}), ace.define("ace/lib/es5-shim", ["require", "exports", "module"], function(e, t, n) {
|
||
function r() {}
|
||
|
||
function w(e) {
|
||
try {
|
||
return Object.defineProperty(e, "sentinel", {}), "sentinel" in e
|
||
} catch (t) {}
|
||
}
|
||
|
||
function H(e) {
|
||
return e = +e, e !== e ? e = 0 : e !== 0 && e !== 1 / 0 && e !== -1 / 0 && (e = (e > 0 || -1) * Math.floor(Math.abs(e))), e
|
||
}
|
||
|
||
function B(e) {
|
||
var t = typeof e;
|
||
return e === null || t === "undefined" || t === "boolean" || t === "number" || t === "string"
|
||
}
|
||
|
||
function j(e) {
|
||
var t, n, r;
|
||
if (B(e)) return e;
|
||
n = e.valueOf;
|
||
if (typeof n == "function") {
|
||
t = n.call(e);
|
||
if (B(t)) return t
|
||
}
|
||
r = e.toString;
|
||
if (typeof r == "function") {
|
||
t = r.call(e);
|
||
if (B(t)) return t
|
||
}
|
||
throw new TypeError
|
||
}
|
||
Function.prototype.bind || (Function.prototype.bind = function(t) {
|
||
var n = this;
|
||
if (typeof n != "function") throw new TypeError("Function.prototype.bind called on incompatible " + n);
|
||
var i = u.call(arguments, 1),
|
||
s = function() {
|
||
if (this instanceof s) {
|
||
var e = n.apply(this, i.concat(u.call(arguments)));
|
||
return Object(e) === e ? e : this
|
||
}
|
||
return n.apply(t, i.concat(u.call(arguments)))
|
||
};
|
||
return n.prototype && (r.prototype = n.prototype, s.prototype = new r, r.prototype = null), s
|
||
});
|
||
var i = Function.prototype.call,
|
||
s = Array.prototype,
|
||
o = Object.prototype,
|
||
u = s.slice,
|
||
a = i.bind(o.toString),
|
||
f = i.bind(o.hasOwnProperty),
|
||
l, c, h, p, d;
|
||
if (d = f(o, "__defineGetter__")) l = i.bind(o.__defineGetter__), c = i.bind(o.__defineSetter__), h = i.bind(o.__lookupGetter__), p = i.bind(o.__lookupSetter__);
|
||
if ([1, 2].splice(0)
|
||
.length != 2)
|
||
if (! function() {
|
||
function e(e) {
|
||
var t = new Array(e + 2);
|
||
return t[0] = t[1] = 0, t
|
||
}
|
||
var t = [],
|
||
n;
|
||
t.splice.apply(t, e(20)), t.splice.apply(t, e(26)), n = t.length, t.splice(5, 0, "XXX"), n + 1 == t.length;
|
||
if (n + 1 == t.length) return !0
|
||
}()) Array.prototype.splice = function(e, t) {
|
||
var n = this.length;
|
||
e > 0 ? e > n && (e = n) : e == void 0 ? e = 0 : e < 0 && (e = Math.max(n + e, 0)), e + t < n || (t = n - e);
|
||
var r = this.slice(e, e + t),
|
||
i = u.call(arguments, 2),
|
||
s = i.length;
|
||
if (e === n) s && this.push.apply(this, i);
|
||
else {
|
||
var o = Math.min(t, n - e),
|
||
a = e + o,
|
||
f = a + s - o,
|
||
l = n - a,
|
||
c = n - o;
|
||
if (f < a)
|
||
for (var h = 0; h < l; ++h) this[f + h] = this[a + h];
|
||
else if (f > a)
|
||
for (h = l; h--;) this[f + h] = this[a + h];
|
||
if (s && e === c) this.length = c, this.push.apply(this, i);
|
||
else {
|
||
this.length = c + s;
|
||
for (h = 0; h < s; ++h) this[e + h] = i[h]
|
||
}
|
||
}
|
||
return r
|
||
};
|
||
else {
|
||
var v = Array.prototype.splice;
|
||
Array.prototype.splice = function(e, t) {
|
||
return arguments.length ? v.apply(this, [e === void 0 ? 0 : e, t === void 0 ? this.length - e : t].concat(u.call(arguments, 2))) : []
|
||
}
|
||
}
|
||
Array.isArray || (Array.isArray = function(t) {
|
||
return a(t) == "[object Array]"
|
||
});
|
||
var m = Object("a"),
|
||
g = m[0] != "a" || !(0 in m);
|
||
Array.prototype.forEach || (Array.prototype.forEach = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = arguments[1],
|
||
s = -1,
|
||
o = r.length >>> 0;
|
||
if (a(t) != "[object Function]") throw new TypeError;
|
||
while (++s < o) s in r && t.call(i, r[s], s, n)
|
||
}), Array.prototype.map || (Array.prototype.map = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = r.length >>> 0,
|
||
s = Array(i),
|
||
o = arguments[1];
|
||
if (a(t) != "[object Function]") throw new TypeError(t + " is not a function");
|
||
for (var u = 0; u < i; u++) u in r && (s[u] = t.call(o, r[u], u, n));
|
||
return s
|
||
}), Array.prototype.filter || (Array.prototype.filter = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = r.length >>> 0,
|
||
s = [],
|
||
o, u = arguments[1];
|
||
if (a(t) != "[object Function]") throw new TypeError(t + " is not a function");
|
||
for (var f = 0; f < i; f++) f in r && (o = r[f], t.call(u, o, f, n) && s.push(o));
|
||
return s
|
||
}), Array.prototype.every || (Array.prototype.every = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = r.length >>> 0,
|
||
s = arguments[1];
|
||
if (a(t) != "[object Function]") throw new TypeError(t + " is not a function");
|
||
for (var o = 0; o < i; o++)
|
||
if (o in r && !t.call(s, r[o], o, n)) return !1;
|
||
return !0
|
||
}), Array.prototype.some || (Array.prototype.some = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = r.length >>> 0,
|
||
s = arguments[1];
|
||
if (a(t) != "[object Function]") throw new TypeError(t + " is not a function");
|
||
for (var o = 0; o < i; o++)
|
||
if (o in r && t.call(s, r[o], o, n)) return !0;
|
||
return !1
|
||
}), Array.prototype.reduce || (Array.prototype.reduce = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = r.length >>> 0;
|
||
if (a(t) != "[object Function]") throw new TypeError(t + " is not a function");
|
||
if (!i && arguments.length == 1) throw new TypeError("reduce of empty array with no initial value");
|
||
var s = 0,
|
||
o;
|
||
if (arguments.length >= 2) o = arguments[1];
|
||
else
|
||
do {
|
||
if (s in r) {
|
||
o = r[s++];
|
||
break
|
||
}
|
||
if (++s >= i) throw new TypeError("reduce of empty array with no initial value")
|
||
} while (!0);
|
||
for (; s < i; s++) s in r && (o = t.call(void 0, o, r[s], s, n));
|
||
return o
|
||
}), Array.prototype.reduceRight || (Array.prototype.reduceRight = function(t) {
|
||
var n = F(this),
|
||
r = g && a(this) == "[object String]" ? this.split("") : n,
|
||
i = r.length >>> 0;
|
||
if (a(t) != "[object Function]") throw new TypeError(t + " is not a function");
|
||
if (!i && arguments.length == 1) throw new TypeError("reduceRight of empty array with no initial value");
|
||
var s, o = i - 1;
|
||
if (arguments.length >= 2) s = arguments[1];
|
||
else
|
||
do {
|
||
if (o in r) {
|
||
s = r[o--];
|
||
break
|
||
}
|
||
if (--o < 0) throw new TypeError("reduceRight of empty array with no initial value")
|
||
} while (!0);
|
||
do o in this && (s = t.call(void 0, s, r[o], o, n)); while (o--);
|
||
return s
|
||
});
|
||
if (!Array.prototype.indexOf || [0, 1].indexOf(1, 2) != -1) Array.prototype.indexOf = function(t) {
|
||
var n = g && a(this) == "[object String]" ? this.split("") : F(this),
|
||
r = n.length >>> 0;
|
||
if (!r) return -1;
|
||
var i = 0;
|
||
arguments.length > 1 && (i = H(arguments[1])), i = i >= 0 ? i : Math.max(0, r + i);
|
||
for (; i < r; i++)
|
||
if (i in n && n[i] === t) return i;
|
||
return -1
|
||
};
|
||
if (!Array.prototype.lastIndexOf || [0, 1].lastIndexOf(0, -3) != -1) Array.prototype.lastIndexOf = function(t) {
|
||
var n = g && a(this) == "[object String]" ? this.split("") : F(this),
|
||
r = n.length >>> 0;
|
||
if (!r) return -1;
|
||
var i = r - 1;
|
||
arguments.length > 1 && (i = Math.min(i, H(arguments[1]))), i = i >= 0 ? i : r - Math.abs(i);
|
||
for (; i >= 0; i--)
|
||
if (i in n && t === n[i]) return i;
|
||
return -1
|
||
};
|
||
Object.getPrototypeOf || (Object.getPrototypeOf = function(t) {
|
||
return t.__proto__ || (t.constructor ? t.constructor.prototype : o)
|
||
});
|
||
if (!Object.getOwnPropertyDescriptor) {
|
||
var y = "Object.getOwnPropertyDescriptor called on a non-object: ";
|
||
Object.getOwnPropertyDescriptor = function(t, n) {
|
||
if (typeof t != "object" && typeof t != "function" || t === null) throw new TypeError(y + t);
|
||
if (!f(t, n)) return;
|
||
var r, i, s;
|
||
r = {
|
||
enumerable: !0,
|
||
configurable: !0
|
||
};
|
||
if (d) {
|
||
var u = t.__proto__;
|
||
t.__proto__ = o;
|
||
var i = h(t, n),
|
||
s = p(t, n);
|
||
t.__proto__ = u;
|
||
if (i || s) return i && (r.get = i), s && (r.set = s), r
|
||
}
|
||
return r.value = t[n], r
|
||
}
|
||
}
|
||
Object.getOwnPropertyNames || (Object.getOwnPropertyNames = function(t) {
|
||
return Object.keys(t)
|
||
});
|
||
if (!Object.create) {
|
||
var b;
|
||
Object.prototype.__proto__ === null ? b = function() {
|
||
return {
|
||
__proto__: null
|
||
}
|
||
} : b = function() {
|
||
var e = {};
|
||
for (var t in e) e[t] = null;
|
||
return e.constructor = e.hasOwnProperty = e.propertyIsEnumerable = e.isPrototypeOf = e.toLocaleString = e.toString = e.valueOf = e.__proto__ = null, e
|
||
}, Object.create = function(t, n) {
|
||
var r;
|
||
if (t === null) r = b();
|
||
else {
|
||
if (typeof t != "object") throw new TypeError("typeof prototype[" + typeof t + "] != 'object'");
|
||
var i = function() {};
|
||
i.prototype = t, r = new i, r.__proto__ = t
|
||
}
|
||
return n !== void 0 && Object.defineProperties(r, n), r
|
||
}
|
||
}
|
||
if (Object.defineProperty) {
|
||
var E = w({}),
|
||
S = typeof document == "undefined" || w(document.createElement("div"));
|
||
if (!E || !S) var x = Object.defineProperty
|
||
}
|
||
if (!Object.defineProperty || x) {
|
||
var T = "Property description must be an object: ",
|
||
N = "Object.defineProperty called on non-object: ",
|
||
C = "getters & setters can not be defined on this javascript engine";
|
||
Object.defineProperty = function(t, n, r) {
|
||
if (typeof t != "object" && typeof t != "function" || t === null) throw new TypeError(N + t);
|
||
if (typeof r != "object" && typeof r != "function" || r === null) throw new TypeError(T + r);
|
||
if (x) try {
|
||
return x.call(Object, t, n, r)
|
||
} catch (i) {}
|
||
if (f(r, "value"))
|
||
if (d && (h(t, n) || p(t, n))) {
|
||
var s = t.__proto__;
|
||
t.__proto__ = o, delete t[n], t[n] = r.value, t.__proto__ = s
|
||
} else t[n] = r.value;
|
||
else {
|
||
if (!d) throw new TypeError(C);
|
||
f(r, "get") && l(t, n, r.get), f(r, "set") && c(t, n, r.set)
|
||
}
|
||
return t
|
||
}
|
||
}
|
||
Object.defineProperties || (Object.defineProperties = function(t, n) {
|
||
for (var r in n) f(n, r) && Object.defineProperty(t, r, n[r]);
|
||
return t
|
||
}), Object.seal || (Object.seal = function(t) {
|
||
return t
|
||
}), Object.freeze || (Object.freeze = function(t) {
|
||
return t
|
||
});
|
||
try {
|
||
Object.freeze(function() {})
|
||
} catch (k) {
|
||
Object.freeze = function(t) {
|
||
return function(n) {
|
||
return typeof n == "function" ? n : t(n)
|
||
}
|
||
}(Object.freeze)
|
||
}
|
||
Object.preventExtensions || (Object.preventExtensions = function(t) {
|
||
return t
|
||
}), Object.isSealed || (Object.isSealed = function(t) {
|
||
return !1
|
||
}), Object.isFrozen || (Object.isFrozen = function(t) {
|
||
return !1
|
||
}), Object.isExtensible || (Object.isExtensible = function(t) {
|
||
if (Object(t) === t) throw new TypeError;
|
||
var n = "";
|
||
while (f(t, n)) n += "?";
|
||
t[n] = !0;
|
||
var r = f(t, n);
|
||
return delete t[n], r
|
||
});
|
||
if (!Object.keys) {
|
||
var L = !0,
|
||
A = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"],
|
||
O = A.length;
|
||
for (var M in {
|
||
toString: null
|
||
}) L = !1;
|
||
Object.keys = function I(e) {
|
||
if (typeof e != "object" && typeof e != "function" || e === null) throw new TypeError("Object.keys called on a non-object");
|
||
var I = [];
|
||
for (var t in e) f(e, t) && I.push(t);
|
||
if (L)
|
||
for (var n = 0, r = O; n < r; n++) {
|
||
var i = A[n];
|
||
f(e, i) && I.push(i)
|
||
}
|
||
return I
|
||
}
|
||
}
|
||
Date.now || (Date.now = function() {
|
||
return (new Date)
|
||
.getTime()
|
||
});
|
||
var _ = " \n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";
|
||
if (!String.prototype.trim || _.trim()) {
|
||
_ = "[" + _ + "]";
|
||
var D = new RegExp("^" + _ + _ + "*"),
|
||
P = new RegExp(_ + _ + "*$");
|
||
String.prototype.trim = function() {
|
||
return String(this)
|
||
.replace(D, "")
|
||
.replace(P, "")
|
||
}
|
||
}
|
||
var F = function(e) {
|
||
if (e == null) throw new TypeError("can't convert " + e + " to object");
|
||
return Object(e)
|
||
}
|
||
}) |