Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/livescript/livescript.js
1294 views
/**1* Link to the project's GitHub page:2* https://github.com/duralog/CodeMirror3*/4(function() {5CodeMirror.defineMode('livescript', function(){6var tokenBase, external;7tokenBase = function(stream, state){8var next_rule, nr, i$, len$, r, m;9if (next_rule = state.next || 'start') {10state.next = state.next;11if (Array.isArray(nr = Rules[next_rule])) {12for (i$ = 0, len$ = nr.length; i$ < len$; ++i$) {13r = nr[i$];14if (r.regex && (m = stream.match(r.regex))) {15state.next = r.next;16return r.token;17}18}19stream.next();20return 'error';21}22if (stream.match(r = Rules[next_rule])) {23if (r.regex && stream.match(r.regex)) {24state.next = r.next;25return r.token;26} else {27stream.next();28return 'error';29}30}31}32stream.next();33return 'error';34};35external = {36startState: function(){37return {38next: 'start',39lastToken: null40};41},42token: function(stream, state){43var style;44style = tokenBase(stream, state);45state.lastToken = {46style: style,47indent: stream.indentation(),48content: stream.current()49};50return style.replace(/\./g, ' ');51},52indent: function(state){53var indentation;54indentation = state.lastToken.indent;55if (state.lastToken.content.match(indenter)) {56indentation += 2;57}58return indentation;59}60};61return external;62});6364var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*';65var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$');66var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))';67var stringfill = {68token: 'string',69regex: '.+'70};71var Rules = {72start: [73{74token: 'comment.doc',75regex: '/\\*',76next: 'comment'77}, {78token: 'comment',79regex: '#.*'80}, {81token: 'keyword',82regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend83}, {84token: 'constant.language',85regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend86}, {87token: 'invalid.illegal',88regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend89}, {90token: 'language.support.class',91regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend92}, {93token: 'language.support.function',94regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend95}, {96token: 'variable.language',97regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend98}, {99token: 'identifier',100regex: identifier + '\\s*:(?![:=])'101}, {102token: 'variable',103regex: identifier104}, {105token: 'keyword.operator',106regex: '(?:\\.{3}|\\s+\\?)'107}, {108token: 'keyword.variable',109regex: '(?:@+|::|\\.\\.)',110next: 'key'111}, {112token: 'keyword.operator',113regex: '\\.\\s*',114next: 'key'115}, {116token: 'string',117regex: '\\\\\\S[^\\s,;)}\\]]*'118}, {119token: 'string.doc',120regex: '\'\'\'',121next: 'qdoc'122}, {123token: 'string.doc',124regex: '"""',125next: 'qqdoc'126}, {127token: 'string',128regex: '\'',129next: 'qstring'130}, {131token: 'string',132regex: '"',133next: 'qqstring'134}, {135token: 'string',136regex: '`',137next: 'js'138}, {139token: 'string',140regex: '<\\[',141next: 'words'142}, {143token: 'string.regex',144regex: '//',145next: 'heregex'146}, {147token: 'string.regex',148regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}',149next: 'key'150}, {151token: 'constant.numeric',152regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)'153}, {154token: 'lparen',155regex: '[({[]'156}, {157token: 'rparen',158regex: '[)}\\]]',159next: 'key'160}, {161token: 'keyword.operator',162regex: '\\S+'163}, {164token: 'text',165regex: '\\s+'166}167],168heregex: [169{170token: 'string.regex',171regex: '.*?//[gimy$?]{0,4}',172next: 'start'173}, {174token: 'string.regex',175regex: '\\s*#{'176}, {177token: 'comment.regex',178regex: '\\s+(?:#.*)?'179}, {180token: 'string.regex',181regex: '\\S+'182}183],184key: [185{186token: 'keyword.operator',187regex: '[.?@!]+'188}, {189token: 'identifier',190regex: identifier,191next: 'start'192}, {193token: 'text',194regex: '.',195next: 'start'196}197],198comment: [199{200token: 'comment.doc',201regex: '.*?\\*/',202next: 'start'203}, {204token: 'comment.doc',205regex: '.+'206}207],208qdoc: [209{210token: 'string',211regex: ".*?'''",212next: 'key'213}, stringfill214],215qqdoc: [216{217token: 'string',218regex: '.*?"""',219next: 'key'220}, stringfill221],222qstring: [223{224token: 'string',225regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'',226next: 'key'227}, stringfill228],229qqstring: [230{231token: 'string',232regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',233next: 'key'234}, stringfill235],236js: [237{238token: 'string',239regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`',240next: 'key'241}, stringfill242],243words: [244{245token: 'string',246regex: '.*?\\]>',247next: 'key'248}, stringfill249]250};251for (var idx in Rules) {252var r = Rules[idx];253if (Array.isArray(r)) {254for (var i = 0, len = r.length; i < len; ++i) {255var rr = r[i];256if (rr.regex) {257Rules[idx][i].regex = new RegExp('^' + rr.regex);258}259}260} else if (r.regex) {261Rules[idx].regex = new RegExp('^' + r.regex);262}263}264})();265266CodeMirror.defineMIME('text/x-livescript', 'livescript');267268269