1{"version":3,"sources":["../../node_modules/codemirror/mode/tcl/tcl.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","parseWords","str","obj","words","split","i","length","keywords","functions","isOperatorChar","chain","stream","state","f","tokenize","tokenBase","beforeParams","ch","next","inParams","tokenString","test","eatWhile","eat","tokenComment","match","tokenUnparsed","skipToEnd","skipTo","word","current","toLowerCase","propertyIsEnumerable","quote","escaped","end","maybeEnd","startState","token","eatSpace","lineComment","defineMIME"],"mappings":"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","file":"tcl.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara\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(\"tcl\", function() {\n  function parseWords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var keywords = parseWords(\"Tcl safe after append array auto_execok auto_import auto_load \" +\n        \"auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror \" +\n        \"binary break catch cd close concat continue dde eof encoding error \" +\n        \"eval exec exit expr fblocked fconfigure fcopy file fileevent filename \" +\n        \"filename flush for foreach format gets glob global history http if \" +\n        \"incr info interp join lappend lindex linsert list llength load lrange \" +\n        \"lreplace lsearch lset lsort memory msgcat namespace open package parray \" +\n        \"pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp \" +\n        \"registry regsub rename resource return scan seek set socket source split \" +\n        \"string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord \" +\n        \"tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest \" +\n        \"tclvars tell time trace unknown unset update uplevel upvar variable \" +\n    \"vwait\");\n    var functions = parseWords(\"if elseif else and not or eq ne in ni for foreach while switch\");\n    var isOperatorChar = /[+\\-*&%=<>!?^\\/\\|]/;\n    function chain(stream, state, f) {\n      state.tokenize = f;\n      return f(stream, state);\n    }\n    function tokenBase(stream, state) {\n      var beforeParams = state.beforeParams;\n      state.beforeParams = false;\n      var ch = stream.next();\n      if ((ch == '\"' || ch == \"'\") && state.inParams) {\n        return chain(stream, state, tokenString(ch));\n      } else if (/[\\[\\]{}\\(\\),;\\.]/.test(ch)) {\n        if (ch == \"(\" && beforeParams) state.inParams = true;\n        else if (ch == \")\") state.inParams = false;\n          return null;\n      } else if (/\\d/.test(ch)) {\n        stream.eatWhile(/[\\w\\.]/);\n        return \"number\";\n      } else if (ch == \"#\") {\n        if (stream.eat(\"*\"))\n          return chain(stream, state, tokenComment);\n        if (ch == \"#\" && stream.match(/ *\\[ *\\[/))\n          return chain(stream, state, tokenUnparsed);\n        stream.skipToEnd();\n        return \"comment\";\n      } else if (ch == '\"') {\n        stream.skipTo(/\"/);\n        return \"comment\";\n      } else if (ch == \"$\") {\n        stream.eatWhile(/[$_a-z0-9A-Z\\.{:]/);\n        stream.eatWhile(/}/);\n        state.beforeParams = true;\n        return \"builtin\";\n      } else if (isOperatorChar.test(ch)) {\n        stream.eatWhile(isOperatorChar);\n        return \"comment\";\n      } else {\n        stream.eatWhile(/[\\w\\$_{}\\xa1-\\uffff]/);\n        var word = stream.current().toLowerCase();\n        if (keywords && keywords.propertyIsEnumerable(word))\n          return \"keyword\";\n        if (functions && functions.propertyIsEnumerable(word)) {\n          state.beforeParams = true;\n          return \"keyword\";\n        }\n        return null;\n      }\n    }\n    function tokenString(quote) {\n      return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n          end = true;\n          break;\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end) state.tokenize = tokenBase;\n        return \"string\";\n      };\n    }\n    function tokenComment(stream, state) {\n      var maybeEnd = false, ch;\n      while (ch = stream.next()) {\n        if (ch == \"#\" && maybeEnd) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        maybeEnd = (ch == \"*\");\n      }\n      return \"comment\";\n    }\n    function tokenUnparsed(stream, state) {\n      var maybeEnd = 0, ch;\n      while (ch = stream.next()) {\n        if (ch == \"#\" && maybeEnd == 2) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        if (ch == \"]\")\n          maybeEnd++;\n        else if (ch != \" \")\n          maybeEnd = 0;\n      }\n      return \"meta\";\n    }\n    return {\n      startState: function() {\n        return {\n          tokenize: tokenBase,\n          beforeParams: false,\n          inParams: false\n        };\n      },\n      token: function(stream, state) {\n        if (stream.eatSpace()) return null;\n        return state.tokenize(stream, state);\n      },\n      lineComment: \"#\"\n    };\n});\nCodeMirror.defineMIME(\"text/x-tcl\", \"tcl\");\n\n});\n"]}