1{"version":3,"sources":["../../node_modules/codemirror/mode/swift/swift.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","wordSet","words","set","i","length","keywords","definingKeywords","atoms","types","operators","punc","binary","octal","hexadecimal","decimal","identifier","property","instruction","attribute","tokenBase","stream","state","prev","sol","indented","indentation","eatSpace","ch","peek","match","skipToEnd","tokenize","push","tokenComment","indexOf","next","stringMatch","tokenString","bind","ident","current","hasOwnProperty","tokenUntilClosingParen","depth","inner","backUp","pop","openQuote","singleLine","escaped","eat","Context","align","this","pushContext","column","context","popContext","defineMode","config","startState","token","style","bracket","exec","indent","textAfter","cx","closing","test","indentUnit","electricInput","lineComment","blockCommentStart","blockCommentEnd","fold","closeBrackets","defineMIME"],"mappings":"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","file":"swift.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Swift mode created by Michael Kaminsky https://github.com/mkaminsky11\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\")\n    mod(require(\"../../lib/codemirror\"))\n  else if (typeof define == \"function\" && define.amd)\n    define([\"../../lib/codemirror\"], mod)\n  else\n    mod(CodeMirror)\n})(function(CodeMirror) {\n  \"use strict\"\n\n  function wordSet(words) {\n    var set = {}\n    for (var i = 0; i < words.length; i++) set[words[i]] = true\n    return set\n  }\n\n  var keywords = wordSet([\"_\",\"var\",\"let\",\"class\",\"enum\",\"extension\",\"import\",\"protocol\",\"struct\",\"func\",\"typealias\",\"associatedtype\",\n                          \"open\",\"public\",\"internal\",\"fileprivate\",\"private\",\"deinit\",\"init\",\"new\",\"override\",\"self\",\"subscript\",\"super\",\n                          \"convenience\",\"dynamic\",\"final\",\"indirect\",\"lazy\",\"required\",\"static\",\"unowned\",\"unowned(safe)\",\"unowned(unsafe)\",\"weak\",\"as\",\"is\",\n                          \"break\",\"case\",\"continue\",\"default\",\"else\",\"fallthrough\",\"for\",\"guard\",\"if\",\"in\",\"repeat\",\"switch\",\"where\",\"while\",\n                          \"defer\",\"return\",\"inout\",\"mutating\",\"nonmutating\",\"catch\",\"do\",\"rethrows\",\"throw\",\"throws\",\"try\",\"didSet\",\"get\",\"set\",\"willSet\",\n                          \"assignment\",\"associativity\",\"infix\",\"left\",\"none\",\"operator\",\"postfix\",\"precedence\",\"precedencegroup\",\"prefix\",\"right\",\n                          \"Any\",\"AnyObject\",\"Type\",\"dynamicType\",\"Self\",\"Protocol\",\"__COLUMN__\",\"__FILE__\",\"__FUNCTION__\",\"__LINE__\"])\n  var definingKeywords = wordSet([\"var\",\"let\",\"class\",\"enum\",\"extension\",\"import\",\"protocol\",\"struct\",\"func\",\"typealias\",\"associatedtype\",\"for\"])\n  var atoms = wordSet([\"true\",\"false\",\"nil\",\"self\",\"super\",\"_\"])\n  var types = wordSet([\"Array\",\"Bool\",\"Character\",\"Dictionary\",\"Double\",\"Float\",\"Int\",\"Int8\",\"Int16\",\"Int32\",\"Int64\",\"Never\",\"Optional\",\"Set\",\"String\",\n                       \"UInt8\",\"UInt16\",\"UInt32\",\"UInt64\",\"Void\"])\n  var operators = \"+-/*%=|&<>~^?!\"\n  var punc = \":;,.(){}[]\"\n  var binary = /^\\-?0b[01][01_]*/\n  var octal = /^\\-?0o[0-7][0-7_]*/\n  var hexadecimal = /^\\-?0x[\\dA-Fa-f][\\dA-Fa-f_]*(?:(?:\\.[\\dA-Fa-f][\\dA-Fa-f_]*)?[Pp]\\-?\\d[\\d_]*)?/\n  var decimal = /^\\-?\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[Ee]\\-?\\d[\\d_]*)?/\n  var identifier = /^\\$\\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\\1/\n  var property = /^\\.(?:\\$\\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\\1)/\n  var instruction = /^\\#[A-Za-z]+/\n  var attribute = /^@(?:\\$\\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\\1)/\n  //var regexp = /^\\/(?!\\s)(?:\\/\\/)?(?:\\\\.|[^\\/])+\\//\n\n  function tokenBase(stream, state, prev) {\n    if (stream.sol()) state.indented = stream.indentation()\n    if (stream.eatSpace()) return null\n\n    var ch = stream.peek()\n    if (ch == \"/\") {\n      if (stream.match(\"//\")) {\n        stream.skipToEnd()\n        return \"comment\"\n      }\n      if (stream.match(\"/*\")) {\n        state.tokenize.push(tokenComment)\n        return tokenComment(stream, state)\n      }\n    }\n    if (stream.match(instruction)) return \"builtin\"\n    if (stream.match(attribute)) return \"attribute\"\n    if (stream.match(binary)) return \"number\"\n    if (stream.match(octal)) return \"number\"\n    if (stream.match(hexadecimal)) return \"number\"\n    if (stream.match(decimal)) return \"number\"\n    if (stream.match(property)) return \"property\"\n    if (operators.indexOf(ch) > -1) {\n      stream.next()\n      return \"operator\"\n    }\n    if (punc.indexOf(ch) > -1) {\n      stream.next()\n      stream.match(\"..\")\n      return \"punctuation\"\n    }\n    var stringMatch\n    if (stringMatch = stream.match(/(\"\"\"|\"|')/)) {\n      var tokenize = tokenString.bind(null, stringMatch[0])\n      state.tokenize.push(tokenize)\n      return tokenize(stream, state)\n    }\n\n    if (stream.match(identifier)) {\n      var ident = stream.current()\n      if (types.hasOwnProperty(ident)) return \"variable-2\"\n      if (atoms.hasOwnProperty(ident)) return \"atom\"\n      if (keywords.hasOwnProperty(ident)) {\n        if (definingKeywords.hasOwnProperty(ident))\n          state.prev = \"define\"\n        return \"keyword\"\n      }\n      if (prev == \"define\") return \"def\"\n      return \"variable\"\n    }\n\n    stream.next()\n    return null\n  }\n\n  function tokenUntilClosingParen() {\n    var depth = 0\n    return function(stream, state, prev) {\n      var inner = tokenBase(stream, state, prev)\n      if (inner == \"punctuation\") {\n        if (stream.current() == \"(\") ++depth\n        else if (stream.current() == \")\") {\n          if (depth == 0) {\n            stream.backUp(1)\n            state.tokenize.pop()\n            return state.tokenize[state.tokenize.length - 1](stream, state)\n          }\n          else --depth\n        }\n      }\n      return inner\n    }\n  }\n\n  function tokenString(openQuote, stream, state) {\n    var singleLine = openQuote.length == 1\n    var ch, escaped = false\n    while (ch = stream.peek()) {\n      if (escaped) {\n        stream.next()\n        if (ch == \"(\") {\n          state.tokenize.push(tokenUntilClosingParen())\n          return \"string\"\n        }\n        escaped = false\n      } else if (stream.match(openQuote)) {\n        state.tokenize.pop()\n        return \"string\"\n      } else {\n        stream.next()\n        escaped = ch == \"\\\\\"\n      }\n    }\n    if (singleLine) {\n      state.tokenize.pop()\n    }\n    return \"string\"\n  }\n\n  function tokenComment(stream, state) {\n    var ch\n    while (true) {\n      stream.match(/^[^/*]+/, true)\n      ch = stream.next()\n      if (!ch) break\n      if (ch === \"/\" && stream.eat(\"*\")) {\n        state.tokenize.push(tokenComment)\n      } else if (ch === \"*\" && stream.eat(\"/\")) {\n        state.tokenize.pop()\n      }\n    }\n    return \"comment\"\n  }\n\n  function Context(prev, align, indented) {\n    this.prev = prev\n    this.align = align\n    this.indented = indented\n  }\n\n  function pushContext(state, stream) {\n    var align = stream.match(/^\\s*($|\\/[\\/\\*])/, false) ? null : stream.column() + 1\n    state.context = new Context(state.context, align, state.indented)\n  }\n\n  function popContext(state) {\n    if (state.context) {\n      state.indented = state.context.indented\n      state.context = state.context.prev\n    }\n  }\n\n  CodeMirror.defineMode(\"swift\", function(config) {\n    return {\n      startState: function() {\n        return {\n          prev: null,\n          context: null,\n          indented: 0,\n          tokenize: []\n        }\n      },\n\n      token: function(stream, state) {\n        var prev = state.prev\n        state.prev = null\n        var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase\n        var style = tokenize(stream, state, prev)\n        if (!style || style == \"comment\") state.prev = prev\n        else if (!state.prev) state.prev = style\n\n        if (style == \"punctuation\") {\n          var bracket = /[\\(\\[\\{]|([\\]\\)\\}])/.exec(stream.current())\n          if (bracket) (bracket[1] ? popContext : pushContext)(state, stream)\n        }\n\n        return style\n      },\n\n      indent: function(state, textAfter) {\n        var cx = state.context\n        if (!cx) return 0\n        var closing = /^[\\]\\}\\)]/.test(textAfter)\n        if (cx.align != null) return cx.align - (closing ? 1 : 0)\n        return cx.indented + (closing ? 0 : config.indentUnit)\n      },\n\n      electricInput: /^\\s*[\\)\\}\\]]$/,\n\n      lineComment: \"//\",\n      blockCommentStart: \"/*\",\n      blockCommentEnd: \"*/\",\n      fold: \"brace\",\n      closeBrackets: \"()[]{}''\\\"\\\"``\"\n    }\n  })\n\n  CodeMirror.defineMIME(\"text/x-swift\",\"swift\")\n});\n"]}