| ace.define( |
| 'ace/mode/lua_highlight_rules', |
| ['require', 'exports', 'module', 'ace/lib/oop', 'ace/mode/text_highlight_rules'], |
| function (e, t, n) { |
| 'use strict' |
| var r = e('../lib/oop'), |
| i = e('./text_highlight_rules').TextHighlightRules, |
| s = function () { |
| var e = |
| 'break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not', |
| t = 'true|false|nil|_G|_VERSION', |
| n = |
| 'string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber', |
| r = 'string|package|os|io|math|debug|table|coroutine', |
| i = 'setn|foreach|foreachi|gcinfo|log10|maxn', |
| s = this.createKeywordMapper( |
| { |
| keyword: e, |
| 'support.function': n, |
| 'keyword.deprecated': i, |
| 'constant.library': r, |
| 'constant.language': t, |
| 'variable.language': 'self', |
| }, |
| 'identifier' |
| ), |
| o = '(?:(?:[1-9]\\d*)|(?:0))', |
| u = '(?:0[xX][\\dA-Fa-f]+)', |
| a = '(?:' + o + '|' + u + ')', |
| f = '(?:\\.\\d+)', |
| l = '(?:\\d+)', |
| c = '(?:(?:' + l + '?' + f + ')|(?:' + l + '\\.))', |
| h = '(?:' + c + ')' |
| ;(this.$rules = { |
| start: [ |
| { |
| stateName: 'bracketedComment', |
| onMatch: function (e, t, n) { |
| return n.unshift(this.next, e.length - 2, t), 'comment' |
| }, |
| regex: /\-\-\[=*\[/, |
| next: [ |
| { |
| onMatch: function (e, t, n) { |
| return ( |
| e.length == n[1] |
| ? (n.shift(), n.shift(), (this.next = n.shift())) |
| : (this.next = ''), |
| 'comment' |
| ) |
| }, |
| regex: /\]=*\]/, |
| next: 'start', |
| }, |
| { defaultToken: 'comment' }, |
| ], |
| }, |
| { token: 'comment', regex: '\\-\\-.*$' }, |
| { |
| stateName: 'bracketedString', |
| onMatch: function (e, t, n) { |
| return n.unshift(this.next, e.length, t), 'string.start' |
| }, |
| regex: /\[=*\[/, |
| next: [ |
| { |
| onMatch: function (e, t, n) { |
| return ( |
| e.length == n[1] |
| ? (n.shift(), n.shift(), (this.next = n.shift())) |
| : (this.next = ''), |
| 'string.end' |
| ) |
| }, |
| regex: /\]=*\]/, |
| next: 'start', |
| }, |
| { defaultToken: 'string' }, |
| ], |
| }, |
| { token: 'string', regex: '"(?:[^\\\\]|\\\\.)*?"' }, |
| { token: 'string', regex: "'(?:[^\\\\]|\\\\.)*?'" }, |
| { token: 'constant.numeric', regex: h }, |
| { token: 'constant.numeric', regex: a + '\\b' }, |
| { token: s, regex: '[a-zA-Z_$][a-zA-Z0-9_$]*\\b' }, |
| { |
| token: 'keyword.operator', |
| regex: '\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\.', |
| }, |
| { token: 'paren.lparen', regex: '[\\[\\(\\{]' }, |
| { token: 'paren.rparen', regex: '[\\]\\)\\}]' }, |
| { token: 'text', regex: '\\s+|\\w+' }, |
| ], |
| }), |
| this.normalizeRules() |
| } |
| r.inherits(s, i), (t.LuaHighlightRules = s) |
| } |
| ), |
| ace.define( |
| 'ace/mode/folding/lua', |
| [ |
| 'require', |
| 'exports', |
| 'module', |
| 'ace/lib/oop', |
| 'ace/mode/folding/fold_mode', |
| 'ace/range', |
| 'ace/token_iterator', |
| ], |
| function (e, t, n) { |
| 'use strict' |
| var r = e('../../lib/oop'), |
| i = e('./fold_mode').FoldMode, |
| s = e('../../range').Range, |
| o = e('../../token_iterator').TokenIterator, |
| u = (t.FoldMode = function () {}) |
| r.inherits(u, i), |
| function () { |
| ;(this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/), |
| (this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/), |
| (this.getFoldWidget = function (e, t, n) { |
| var r = e.getLine(n), |
| i = this.foldingStartMarker.test(r), |
| s = this.foldingStopMarker.test(r) |
| if (i && !s) { |
| var o = r.match(this.foldingStartMarker) |
| if (o[1] == 'then' && /\belseif\b/.test(r)) return |
| if (o[1]) { |
| if (e.getTokenAt(n, o.index + 1).type === 'keyword') return 'start' |
| } else { |
| if (!o[2]) return 'start' |
| var u = e.bgTokenizer.getState(n) || '' |
| if (u[0] == 'bracketedComment' || u[0] == 'bracketedString') return 'start' |
| } |
| } |
| if (t != 'markbeginend' || !s || (i && s)) return '' |
| var o = r.match(this.foldingStopMarker) |
| if (o[0] === 'end') { |
| if (e.getTokenAt(n, o.index + 1).type === 'keyword') return 'end' |
| } else { |
| if (o[0][0] !== ']') return 'end' |
| var u = e.bgTokenizer.getState(n - 1) || '' |
| if (u[0] == 'bracketedComment' || u[0] == 'bracketedString') return 'end' |
| } |
| }), |
| (this.getFoldWidgetRange = function (e, t, n) { |
| var r = e.doc.getLine(n), |
| i = this.foldingStartMarker.exec(r) |
| if (i) |
| return i[1] |
| ? this.luaBlock(e, n, i.index + 1) |
| : i[2] |
| ? e.getCommentFoldRange(n, i.index + 1) |
| : this.openingBracketBlock(e, '{', n, i.index) |
| var i = this.foldingStopMarker.exec(r) |
| if (i) |
| return i[0] === 'end' && e.getTokenAt(n, i.index + 1).type === 'keyword' |
| ? this.luaBlock(e, n, i.index + 1) |
| : i[0][0] === ']' |
| ? e.getCommentFoldRange(n, i.index + 1) |
| : this.closingBracketBlock(e, '}', n, i.index + i[0].length) |
| }), |
| (this.luaBlock = function (e, t, n, r) { |
| var i = new o(e, t, n), |
| u = { function: 1, do: 1, then: 1, elseif: -1, end: -1, repeat: 1, until: -1 }, |
| a = i.getCurrentToken() |
| if (!a || a.type != 'keyword') return |
| var f = a.value, |
| l = [f], |
| c = u[f] |
| if (!c) return |
| var h = c === -1 ? i.getCurrentTokenColumn() : e.getLine(t).length, |
| p = t |
| i.step = c === -1 ? i.stepBackward : i.stepForward |
| while ((a = i.step())) { |
| if (a.type !== 'keyword') continue |
| var d = c * u[a.value] |
| if (d > 0) l.unshift(a.value) |
| else if (d <= 0) { |
| l.shift() |
| if (!l.length && a.value != 'elseif') break |
| d === 0 && l.unshift(a.value) |
| } |
| } |
| if (!a) return null |
| if (r) return i.getCurrentTokenRange() |
| var t = i.getCurrentTokenRow() |
| return c === -1 |
| ? new s(t, e.getLine(t).length, p, h) |
| : new s(p, h, t, i.getCurrentTokenColumn()) |
| }) |
| }.call(u.prototype) |
| } |
| ), |
| ace.define( |
| 'ace/mode/lua', |
| [ |
| 'require', |
| 'exports', |
| 'module', |
| 'ace/lib/oop', |
| 'ace/mode/text', |
| 'ace/mode/lua_highlight_rules', |
| 'ace/mode/folding/lua', |
| 'ace/range', |
| 'ace/worker/worker_client', |
| ], |
| function (e, t, n) { |
| 'use strict' |
| var r = e('../lib/oop'), |
| i = e('./text').Mode, |
| s = e('./lua_highlight_rules').LuaHighlightRules, |
| o = e('./folding/lua').FoldMode, |
| u = e('../range').Range, |
| a = e('../worker/worker_client').WorkerClient, |
| f = function () { |
| ;(this.HighlightRules = s), |
| (this.foldingRules = new o()), |
| (this.$behaviour = this.$defaultBehaviour) |
| } |
| r.inherits(f, i), |
| function () { |
| function n(t) { |
| var n = 0 |
| for (var r = 0; r < t.length; r++) { |
| var i = t[r] |
| i.type == 'keyword' |
| ? i.value in e && (n += e[i.value]) |
| : i.type == 'paren.lparen' |
| ? (n += i.value.length) |
| : i.type == 'paren.rparen' && (n -= i.value.length) |
| } |
| return n < 0 ? -1 : n > 0 ? 1 : 0 |
| } |
| ;(this.lineCommentStart = '--'), (this.blockComment = { start: '--[', end: ']--' }) |
| var e = { |
| function: 1, |
| then: 1, |
| do: 1, |
| else: 1, |
| elseif: 1, |
| repeat: 1, |
| end: -1, |
| until: -1, |
| }, |
| t = ['else', 'elseif', 'end', 'until'] |
| ;(this.getNextLineIndent = function (e, t, r) { |
| var i = this.$getIndent(t), |
| s = 0, |
| o = this.getTokenizer().getLineTokens(t, e), |
| u = o.tokens |
| return ( |
| e == 'start' && (s = n(u)), |
| s > 0 |
| ? i + r |
| : s < 0 && i.substr(i.length - r.length) == r && !this.checkOutdent(e, t, '\n') |
| ? i.substr(0, i.length - r.length) |
| : i |
| ) |
| }), |
| (this.checkOutdent = function (e, n, r) { |
| if (r != '\n' && r != '\r' && r != '\r\n') return !1 |
| if (n.match(/^\s*[\)\}\]]$/)) return !0 |
| var i = this.getTokenizer().getLineTokens(n.trim(), e).tokens |
| return !i || !i.length ? !1 : i[0].type == 'keyword' && t.indexOf(i[0].value) != -1 |
| }), |
| (this.getMatching = function (t, n, r) { |
| if (n == undefined) { |
| var i = t.selection.lead |
| ;(r = i.column), (n = i.row) |
| } |
| var s = t.getTokenAt(n, r) |
| if (s && s.value in e) return this.foldingRules.luaBlock(t, n, r, !0) |
| }), |
| (this.autoOutdent = function (e, t, n) { |
| var r = t.getLine(n), |
| i = r.match(/^\s*/)[0].length |
| if (!i || !n) return |
| var s = this.getMatching(t, n, i + 1) |
| if (!s || s.start.row == n) return |
| var o = this.$getIndent(t.getLine(s.start.row)) |
| o.length != i && |
| (t.replace(new u(n, 0, n, i), o), t.outdentRows(new u(n + 1, 0, n + 1, 0))) |
| }), |
| (this.createWorker = function (e) { |
| var t = new a(['ace'], 'ace/mode/lua_worker', 'Worker') |
| return ( |
| t.attachToDocument(e.getDocument()), |
| t.on('annotate', function (t) { |
| e.setAnnotations(t.data) |
| }), |
| t.on('terminate', function () { |
| e.clearAnnotations() |
| }), |
| t |
| ) |
| }), |
| (this.$id = 'ace/mode/lua'), |
| (this.snippetFileId = 'ace/snippets/lua') |
| }.call(f.prototype), |
| (t.Mode = f) |
| } |
| ) |
| ;(function () { |
| ace.require(['ace/mode/lua'], function (m) { |
| if (typeof module == 'object' && typeof exports == 'object' && module) { |
| module.exports = m |
| } |
| }) |
| })() |
|
|