1{"version":3,"sources":["../../node_modules/codemirror/mode/coffeescript/coffeescript.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","conf","parserConf","ERRORCLASS","wordRegexp","words","RegExp","join","operators","delimiters","identifiers","atProp","wordOperators","indentKeywords","commonKeywords","keywords","concat","stringPrefixes","regexPrefixes","commonConstants","constants","tokenBase","stream","state","sol","scope","align","scopeOffset","offset","eatSpace","lineOffset","indentation","type","dedent","ch","peek","match","skipToEnd","tokenize","longComment","floatLiteral","backUp","intLiteral","tokenFactory","current","prop","next","delimiter","singleline","outclass","eol","eatWhile","eat","singleLineStringErrors","indent","alignOffset","prev","indentUnit","column","length","_indent","matched","tokenLexer","style","delimiter_index","indexOf","slice","exec","external","startState","basecolumn","token","fillAlign","text","closer","charAt","closes","lineComment","fold","defineMIME"],"mappings":"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","file":"coffeescript.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n  var ERRORCLASS = \"error\";\n\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  }\n\n  var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n  var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n  var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n  var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n  var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n                                  \"is\", \"isnt\", \"in\",\n                                  \"instanceof\", \"typeof\"]);\n  var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n                        \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n  var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n                        \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n                        \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n  var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n  indentKeywords = wordRegexp(indentKeywords);\n\n\n  var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n  var regexPrefixes = /^(\\/{3}|\\/)/;\n  var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n  var constants = wordRegexp(commonConstants);\n\n  // Tokenizers\n  function tokenBase(stream, state) {\n    // Handle scope changes\n    if (stream.sol()) {\n      if (state.scope.align === null) state.scope.align = false;\n      var scopeOffset = state.scope.offset;\n      if (stream.eatSpace()) {\n        var lineOffset = stream.indentation();\n        if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n          return \"indent\";\n        } else if (lineOffset < scopeOffset) {\n          return \"dedent\";\n        }\n        return null;\n      } else {\n        if (scopeOffset > 0) {\n          dedent(stream, state);\n        }\n      }\n    }\n    if (stream.eatSpace()) {\n      return null;\n    }\n\n    var ch = stream.peek();\n\n    // Handle docco title comment (single line)\n    if (stream.match(\"####\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n\n    // Handle multi line comments\n    if (stream.match(\"###\")) {\n      state.tokenize = longComment;\n      return state.tokenize(stream, state);\n    }\n\n    // Single line comment\n    if (ch === \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n\n    // Handle number literals\n    if (stream.match(/^-?[0-9\\.]/, false)) {\n      var floatLiteral = false;\n      // Floats\n      if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n        floatLiteral = true;\n      }\n      if (stream.match(/^-?\\d+\\.\\d*/)) {\n        floatLiteral = true;\n      }\n      if (stream.match(/^-?\\.\\d+/)) {\n        floatLiteral = true;\n      }\n\n      if (floatLiteral) {\n        // prevent from getting extra . on 1..\n        if (stream.peek() == \".\"){\n          stream.backUp(1);\n        }\n        return \"number\";\n      }\n      // Integers\n      var intLiteral = false;\n      // Hex\n      if (stream.match(/^-?0x[0-9a-f]+/i)) {\n        intLiteral = true;\n      }\n      // Decimal\n      if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n        intLiteral = true;\n      }\n      // Zero by itself with no other piece of number.\n      if (stream.match(/^-?0(?![\\dx])/i)) {\n        intLiteral = true;\n      }\n      if (intLiteral) {\n        return \"number\";\n      }\n    }\n\n    // Handle strings\n    if (stream.match(stringPrefixes)) {\n      state.tokenize = tokenFactory(stream.current(), false, \"string\");\n      return state.tokenize(stream, state);\n    }\n    // Handle regex literals\n    if (stream.match(regexPrefixes)) {\n      if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n        state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n        return state.tokenize(stream, state);\n      } else {\n        stream.backUp(1);\n      }\n    }\n\n\n\n    // Handle operators and delimiters\n    if (stream.match(operators) || stream.match(wordOperators)) {\n      return \"operator\";\n    }\n    if (stream.match(delimiters)) {\n      return \"punctuation\";\n    }\n\n    if (stream.match(constants)) {\n      return \"atom\";\n    }\n\n    if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n      return \"property\";\n    }\n\n    if (stream.match(keywords)) {\n      return \"keyword\";\n    }\n\n    if (stream.match(identifiers)) {\n      return \"variable\";\n    }\n\n    // Handle non-detected items\n    stream.next();\n    return ERRORCLASS;\n  }\n\n  function tokenFactory(delimiter, singleline, outclass) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        stream.eatWhile(/[^'\"\\/\\\\]/);\n        if (stream.eat(\"\\\\\")) {\n          stream.next();\n          if (singleline && stream.eol()) {\n            return outclass;\n          }\n        } else if (stream.match(delimiter)) {\n          state.tokenize = tokenBase;\n          return outclass;\n        } else {\n          stream.eat(/['\"\\/]/);\n        }\n      }\n      if (singleline) {\n        if (parserConf.singleLineStringErrors) {\n          outclass = ERRORCLASS;\n        } else {\n          state.tokenize = tokenBase;\n        }\n      }\n      return outclass;\n    };\n  }\n\n  function longComment(stream, state) {\n    while (!stream.eol()) {\n      stream.eatWhile(/[^#]/);\n      if (stream.match(\"###\")) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      stream.eatWhile(\"#\");\n    }\n    return \"comment\";\n  }\n\n  function indent(stream, state, type) {\n    type = type || \"coffee\";\n    var offset = 0, align = false, alignOffset = null;\n    for (var scope = state.scope; scope; scope = scope.prev) {\n      if (scope.type === \"coffee\" || scope.type == \"}\") {\n        offset = scope.offset + conf.indentUnit;\n        break;\n      }\n    }\n    if (type !== \"coffee\") {\n      align = null;\n      alignOffset = stream.column() + stream.current().length;\n    } else if (state.scope.align) {\n      state.scope.align = false;\n    }\n    state.scope = {\n      offset: offset,\n      type: type,\n      prev: state.scope,\n      align: align,\n      alignOffset: alignOffset\n    };\n  }\n\n  function dedent(stream, state) {\n    if (!state.scope.prev) return;\n    if (state.scope.type === \"coffee\") {\n      var _indent = stream.indentation();\n      var matched = false;\n      for (var scope = state.scope; scope; scope = scope.prev) {\n        if (_indent === scope.offset) {\n          matched = true;\n          break;\n        }\n      }\n      if (!matched) {\n        return true;\n      }\n      while (state.scope.prev && state.scope.offset !== _indent) {\n        state.scope = state.scope.prev;\n      }\n      return false;\n    } else {\n      state.scope = state.scope.prev;\n      return false;\n    }\n  }\n\n  function tokenLexer(stream, state) {\n    var style = state.tokenize(stream, state);\n    var current = stream.current();\n\n    // Handle scope changes.\n    if (current === \"return\") {\n      state.dedent = true;\n    }\n    if (((current === \"->\" || current === \"=>\") && stream.eol())\n        || style === \"indent\") {\n      indent(stream, state);\n    }\n    var delimiter_index = \"[({\".indexOf(current);\n    if (delimiter_index !== -1) {\n      indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n    }\n    if (indentKeywords.exec(current)){\n      indent(stream, state);\n    }\n    if (current == \"then\"){\n      dedent(stream, state);\n    }\n\n\n    if (style === \"dedent\") {\n      if (dedent(stream, state)) {\n        return ERRORCLASS;\n      }\n    }\n    delimiter_index = \"])}\".indexOf(current);\n    if (delimiter_index !== -1) {\n      while (state.scope.type == \"coffee\" && state.scope.prev)\n        state.scope = state.scope.prev;\n      if (state.scope.type == current)\n        state.scope = state.scope.prev;\n    }\n    if (state.dedent && stream.eol()) {\n      if (state.scope.type == \"coffee\" && state.scope.prev)\n        state.scope = state.scope.prev;\n      state.dedent = false;\n    }\n\n    return style;\n  }\n\n  var external = {\n    startState: function(basecolumn) {\n      return {\n        tokenize: tokenBase,\n        scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n        prop: false,\n        dedent: 0\n      };\n    },\n\n    token: function(stream, state) {\n      var fillAlign = state.scope.align === null && state.scope;\n      if (fillAlign && stream.sol()) fillAlign.align = false;\n\n      var style = tokenLexer(stream, state);\n      if (style && style != \"comment\") {\n        if (fillAlign) fillAlign.align = true;\n        state.prop = style == \"punctuation\" && stream.current() == \".\"\n      }\n\n      return style;\n    },\n\n    indent: function(state, text) {\n      if (state.tokenize != tokenBase) return 0;\n      var scope = state.scope;\n      var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n      if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n      var closes = closer && scope.type === text.charAt(0);\n      if (scope.align)\n        return scope.alignOffset - (closes ? 1 : 0);\n      else\n        return (closes ? scope.prev : scope).offset;\n    },\n\n    lineComment: \"#\",\n    fold: \"indent\"\n  };\n  return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\n\n});\n"]}