{"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":"CAKA,SAAUA,GACR,SAAWC,UAAW,gBAAmBC,SAAU,SACjDF,EAAIG,QAAQ,6BACT,UAAWC,SAAU,YAAcA,OAAOC,IAC7CD,QAAQ,wBAAyBJ,OAEjCA,GAAIM,cACL,SAASA,GACV,YAEA,SAASC,GAAQC,GACf,GAAIC,KACJ,KAAK,GAAIC,GAAI,EAAGA,EAAIF,EAAMG,OAAQD,IAAKD,EAAID,EAAME,IAAM,IACvD,OAAOD,GAGT,GAAIG,GAAWL,GAAS,IAAI,MAAM,MAAM,QAAQ,OAAO,YAAY,SAAS,WAAW,SAAS,OAAO,YAAY,iBAC3F,OAAO,SAAS,WAAW,cAAc,UAAU,SAAS,OAAO,MAAM,WAAW,OAAO,YAAY,QACvG,cAAc,UAAU,QAAQ,WAAW,OAAO,WAAW,SAAS,UAAU,gBAAgB,kBAAkB,OAAO,KAAK,KAC9H,QAAQ,OAAO,WAAW,UAAU,OAAO,cAAc,MAAM,QAAQ,KAAK,KAAK,SAAS,SAAS,QAAQ,QAC3G,QAAQ,SAAS,QAAQ,WAAW,cAAc,QAAQ,KAAK,WAAW,QAAQ,SAAS,MAAM,SAAS,MAAM,MAAM,UACtH,aAAa,gBAAgB,QAAQ,OAAO,OAAO,WAAW,UAAU,aAAa,kBAAkB,SAAS,QAChH,MAAM,YAAY,OAAO,cAAc,OAAO,WAAW,aAAa,WAAW,eAAe,YACxH,IAAIM,GAAmBN,GAAS,MAAM,MAAM,QAAQ,OAAO,YAAY,SAAS,WAAW,SAAS,OAAO,YAAY,iBAAiB,OACxI,IAAIO,GAAQP,GAAS,OAAO,QAAQ,MAAM,OAAO,QAAQ,KACzD,IAAIQ,GAAQR,GAAS,QAAQ,OAAO,YAAY,aAAa,SAAS,QAAQ,MAAM,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,MAAM,SACvH,QAAQ,SAAS,SAAS,SAAS,QACxD,IAAIS,GAAY,gBAChB,IAAIC,GAAO,YACX,IAAIC,GAAS,kBACb,IAAIC,GAAQ,oBACZ,IAAIC,GAAc,+EAClB,IAAIC,GAAU,iDACd,IAAIC,GAAa,sCACjB,IAAIC,GAAW,4CACf,IAAIC,GAAc,cAClB,IAAIC,GAAY,2CAGhB,SAASC,GAAUC,EAAQC,EAAOC,GAChC,GAAIF,EAAOG,MAAOF,EAAMG,SAAWJ,EAAOK,aAC1C,IAAIL,EAAOM,WAAY,MAAO,KAE9B,IAAIC,GAAKP,EAAOQ,MAChB,IAAID,GAAM,IAAK,CACb,GAAIP,EAAOS,MAAM,MAAO,CACtBT,EAAOU,WACP,OAAO,UAET,GAAIV,EAAOS,MAAM,MAAO,CACtBR,EAAMU,SAASC,KAAKC,EACpB,OAAOA,GAAab,EAAQC,IAGhC,GAAID,EAAOS,MAAMZ,GAAc,MAAO,SACtC,IAAIG,EAAOS,MAAMX,GAAY,MAAO,WACpC,IAAIE,EAAOS,MAAMlB,GAAS,MAAO,QACjC,IAAIS,EAAOS,MAAMjB,GAAQ,MAAO,QAChC,IAAIQ,EAAOS,MAAMhB,GAAc,MAAO,QACtC,IAAIO,EAAOS,MAAMf,GAAU,MAAO,QAClC,IAAIM,EAAOS,MAAMb,GAAW,MAAO,UACnC,IAAIP,EAAUyB,QAAQP,IAAO,EAAG,CAC9BP,EAAOe,MACP,OAAO,WAET,GAAIzB,EAAKwB,QAAQP,IAAO,EAAG,CACzBP,EAAOe,MACPf,GAAOS,MAAM,KACb,OAAO,cAET,GAAIO,EACJ,IAAIA,EAAchB,EAAOS,MAAM,aAAc,CAC3C,GAAIE,GAAWM,EAAYC,KAAK,KAAMF,EAAY,GAClDf,GAAMU,SAASC,KAAKD,EACpB,OAAOA,GAASX,EAAQC,GAG1B,GAAID,EAAOS,MAAMd,GAAa,CAC5B,GAAIwB,GAAQnB,EAAOoB,SACnB,IAAIhC,EAAMiC,eAAeF,GAAQ,MAAO,YACxC,IAAIhC,EAAMkC,eAAeF,GAAQ,MAAO,MACxC,IAAIlC,EAASoC,eAAeF,GAAQ,CAClC,GAAIjC,EAAiBmC,eAAeF,GAClClB,EAAMC,KAAO,QACf,OAAO,UAET,GAAIA,GAAQ,SAAU,MAAO,KAC7B,OAAO,WAGTF,EAAOe,MACP,OAAO,MAGT,QAASO,KACP,GAAIC,GAAQ,CACZ,OAAO,UAASvB,EAAQC,EAAOC,GAC7B,GAAIsB,GAAQzB,EAAUC,EAAQC,EAAOC,EACrC,IAAIsB,GAAS,cAAe,CAC1B,GAAIxB,EAAOoB,WAAa,MAAOG,MAC1B,IAAIvB,EAAOoB,WAAa,IAAK,CAChC,GAAIG,GAAS,EAAG,CACdvB,EAAOyB,OAAO,EACdxB,GAAMU,SAASe,KACf,OAAOzB,GAAMU,SAASV,EAAMU,SAAS3B,OAAS,GAAGgB,EAAQC,SAEpDsB,GAGX,MAAOC,IAIX,QAASP,GAAYU,EAAW3B,EAAQC,GACtC,GAAI2B,GAAaD,EAAU3C,QAAU,CACrC,IAAIuB,GAAIsB,EAAU,KAClB,OAAOtB,EAAKP,EAAOQ,OAAQ,CACzB,GAAIqB,EAAS,CACX7B,EAAOe,MACP,IAAIR,GAAM,IAAK,CACbN,EAAMU,SAASC,KAAKU,IACpB,OAAO,SAETO,EAAU,UACL,IAAI7B,EAAOS,MAAMkB,GAAY,CAClC1B,EAAMU,SAASe,KACf,OAAO,aACF,CACL1B,EAAOe,MACPc,GAAUtB,GAAM,MAGpB,GAAIqB,EAAY,CACd3B,EAAMU,SAASe,MAEjB,MAAO,SAGT,QAASb,GAAab,EAAQC,GAC5B,GAAIM,EACJ,OAAO,KAAM,CACXP,EAAOS,MAAM,WAAW,KACxBF,GAAKP,EAAOe,MACZ,KAAKR,EAAI,KACT,IAAIA,IAAO,KAAOP,EAAO8B,IAAI,KAAM,CACjC7B,EAAMU,SAASC,KAAKC,OACf,IAAIN,IAAO,KAAOP,EAAO8B,IAAI,KAAM,CACxC7B,EAAMU,SAASe,OAGnB,MAAO,UAGT,QAASK,GAAQ7B,EAAM8B,EAAO5B,GAC5B6B,KAAK/B,KAAOA,CACZ+B,MAAKD,MAAQA,CACbC,MAAK7B,SAAWA,EAGlB,QAAS8B,GAAYjC,EAAOD,GAC1B,GAAIgC,GAAQhC,EAAOS,MAAM,mBAAoB,OAAS,KAAOT,EAAOmC,SAAW,CAC/ElC,GAAMmC,QAAU,GAAIL,GAAQ9B,EAAMmC,QAASJ,EAAO/B,EAAMG,UAG1D,QAASiC,GAAWpC,GAClB,GAAIA,EAAMmC,QAAS,CACjBnC,EAAMG,SAAWH,EAAMmC,QAAQhC,QAC/BH,GAAMmC,QAAUnC,EAAMmC,QAAQlC,MAIlCvB,EAAW2D,WAAW,QAAS,SAASC,GACtC,OACEC,WAAY,WACV,OACEtC,KAAM,KACNkC,QAAS,KACThC,SAAU,EACVO,cAIJ8B,MAAO,SAASzC,EAAQC,GACtB,GAAIC,GAAOD,EAAMC,IACjBD,GAAMC,KAAO,IACb,IAAIS,GAAWV,EAAMU,SAASV,EAAMU,SAAS3B,OAAS,IAAMe,CAC5D,IAAI2C,GAAQ/B,EAASX,EAAQC,EAAOC,EACpC,KAAKwC,GAASA,GAAS,UAAWzC,EAAMC,KAAOA,MAC1C,KAAKD,EAAMC,KAAMD,EAAMC,KAAOwC,CAEnC,IAAIA,GAAS,cAAe,CAC1B,GAAIC,GAAU,sBAAsBC,KAAK5C,EAAOoB,UAChD,IAAIuB,GAAUA,EAAQ,GAAKN,EAAaH,GAAajC,EAAOD,GAG9D,MAAO0C,IAGTG,OAAQ,SAAS5C,EAAO6C,GACtB,GAAIC,GAAK9C,EAAMmC,OACf,KAAKW,EAAI,MAAO,EAChB,IAAIC,GAAU,YAAYC,KAAKH,EAC/B,IAAIC,EAAGf,OAAS,KAAM,MAAOe,GAAGf,OAASgB,EAAU,EAAI,EACvD,OAAOD,GAAG3C,UAAY4C,EAAU,EAAIT,EAAOW,aAG7CC,cAAe,gBAEfC,YAAa,KACbC,kBAAmB,KACnBC,gBAAiB,KACjBC,KAAM,QACNC,cAAe,mBAInB7E,GAAW8E,WAAW,eAAe","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"]}