1{"version":3,"sources":["../../node_modules/codemirror/mode/asterisk/asterisk.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","atoms","dpcmd","apps","basicToken","stream","state","cur","ch","next","blockComment","match","skipTo","skipToEnd","eat","eatWhile","current","indexOf","ch1","peek","extenStart","extenSame","extenInclude","startState","extenExten","extenPriority","extenApplication","token","eatSpace","test","toLowerCase","blockCommentStart","blockCommentEnd","lineComment","defineMIME"],"mappings":"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","file":"asterisk.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/*\n * =====================================================================================\n *\n *       Filename:  mode/asterisk/asterisk.js\n *\n *    Description:  CodeMirror mode for Asterisk dialplan\n *\n *        Created:  05/17/2012 09:20:25 PM\n *       Revision:  08/05/2019 AstLinux Project: Support block-comments\n *\n *         Author:  Stas Kobzar (stas@modulis.ca),\n *        Company:  Modulis.ca Inc.\n *\n * =====================================================================================\n */\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(\"asterisk\", function() {\n  var atoms    = [\"exten\", \"same\", \"include\",\"ignorepat\",\"switch\"],\n      dpcmd    = [\"#include\",\"#exec\"],\n      apps     = [\n                  \"addqueuemember\",\"adsiprog\",\"aelsub\",\"agentlogin\",\"agentmonitoroutgoing\",\"agi\",\n                  \"alarmreceiver\",\"amd\",\"answer\",\"authenticate\",\"background\",\"backgrounddetect\",\n                  \"bridge\",\"busy\",\"callcompletioncancel\",\"callcompletionrequest\",\"celgenuserevent\",\n                  \"changemonitor\",\"chanisavail\",\"channelredirect\",\"chanspy\",\"clearhash\",\"confbridge\",\n                  \"congestion\",\"continuewhile\",\"controlplayback\",\"dahdiacceptr2call\",\"dahdibarge\",\n                  \"dahdiras\",\"dahdiscan\",\"dahdisendcallreroutingfacility\",\"dahdisendkeypadfacility\",\n                  \"datetime\",\"dbdel\",\"dbdeltree\",\"deadagi\",\"dial\",\"dictate\",\"directory\",\"disa\",\n                  \"dumpchan\",\"eagi\",\"echo\",\"endwhile\",\"exec\",\"execif\",\"execiftime\",\"exitwhile\",\"extenspy\",\n                  \"externalivr\",\"festival\",\"flash\",\"followme\",\"forkcdr\",\"getcpeid\",\"gosub\",\"gosubif\",\n                  \"goto\",\"gotoif\",\"gotoiftime\",\"hangup\",\"iax2provision\",\"ices\",\"importvar\",\"incomplete\",\n                  \"ivrdemo\",\"jabberjoin\",\"jabberleave\",\"jabbersend\",\"jabbersendgroup\",\"jabberstatus\",\n                  \"jack\",\"log\",\"macro\",\"macroexclusive\",\"macroexit\",\"macroif\",\"mailboxexists\",\"meetme\",\n                  \"meetmeadmin\",\"meetmechanneladmin\",\"meetmecount\",\"milliwatt\",\"minivmaccmess\",\"minivmdelete\",\n                  \"minivmgreet\",\"minivmmwi\",\"minivmnotify\",\"minivmrecord\",\"mixmonitor\",\"monitor\",\"morsecode\",\n                  \"mp3player\",\"mset\",\"musiconhold\",\"nbscat\",\"nocdr\",\"noop\",\"odbc\",\"odbc\",\"odbcfinish\",\n                  \"originate\",\"ospauth\",\"ospfinish\",\"osplookup\",\"ospnext\",\"page\",\"park\",\"parkandannounce\",\n                  \"parkedcall\",\"pausemonitor\",\"pausequeuemember\",\"pickup\",\"pickupchan\",\"playback\",\"playtones\",\n                  \"privacymanager\",\"proceeding\",\"progress\",\"queue\",\"queuelog\",\"raiseexception\",\"read\",\"readexten\",\n                  \"readfile\",\"receivefax\",\"receivefax\",\"receivefax\",\"record\",\"removequeuemember\",\n                  \"resetcdr\",\"retrydial\",\"return\",\"ringing\",\"sayalpha\",\"saycountedadj\",\"saycountednoun\",\n                  \"saycountpl\",\"saydigits\",\"saynumber\",\"sayphonetic\",\"sayunixtime\",\"senddtmf\",\"sendfax\",\n                  \"sendfax\",\"sendfax\",\"sendimage\",\"sendtext\",\"sendurl\",\"set\",\"setamaflags\",\n                  \"setcallerpres\",\"setmusiconhold\",\"sipaddheader\",\"sipdtmfmode\",\"sipremoveheader\",\"skel\",\n                  \"slastation\",\"slatrunk\",\"sms\",\"softhangup\",\"speechactivategrammar\",\"speechbackground\",\n                  \"speechcreate\",\"speechdeactivategrammar\",\"speechdestroy\",\"speechloadgrammar\",\"speechprocessingsound\",\n                  \"speechstart\",\"speechunloadgrammar\",\"stackpop\",\"startmusiconhold\",\"stopmixmonitor\",\"stopmonitor\",\n                  \"stopmusiconhold\",\"stopplaytones\",\"system\",\"testclient\",\"testserver\",\"transfer\",\"tryexec\",\n                  \"trysystem\",\"unpausemonitor\",\"unpausequeuemember\",\"userevent\",\"verbose\",\"vmauthenticate\",\n                  \"vmsayname\",\"voicemail\",\"voicemailmain\",\"wait\",\"waitexten\",\"waitfornoise\",\"waitforring\",\n                  \"waitforsilence\",\"waitmusiconhold\",\"waituntil\",\"while\",\"zapateller\"\n                 ];\n\n  function basicToken(stream,state){\n    var cur = '';\n    var ch = stream.next();\n    // comment\n    if (state.blockComment) {\n      if (ch == \"-\" && stream.match(\"-;\", true)) {\n        state.blockComment = false;\n      } else if (stream.skipTo(\"--;\")) {\n        stream.next();\n        stream.next();\n        stream.next();\n        state.blockComment = false;\n      } else {\n        stream.skipToEnd();\n      }\n      return \"comment\";\n    }\n    if(ch == \";\") {\n      if (stream.match(\"--\", true)) {\n        if (!stream.match(\"-\", false)) {  // Except ;--- is not a block comment\n          state.blockComment = true;\n          return \"comment\";\n        }\n      }\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    // context\n    if(ch == '[') {\n      stream.skipTo(']');\n      stream.eat(']');\n      return \"header\";\n    }\n    // string\n    if(ch == '\"') {\n      stream.skipTo('\"');\n      return \"string\";\n    }\n    if(ch == \"'\") {\n      stream.skipTo(\"'\");\n      return \"string-2\";\n    }\n    // dialplan commands\n    if(ch == '#') {\n      stream.eatWhile(/\\w/);\n      cur = stream.current();\n      if(dpcmd.indexOf(cur) !== -1) {\n        stream.skipToEnd();\n        return \"strong\";\n      }\n    }\n    // application args\n    if(ch == '$'){\n      var ch1 = stream.peek();\n      if(ch1 == '{'){\n        stream.skipTo('}');\n        stream.eat('}');\n        return \"variable-3\";\n      }\n    }\n    // extension\n    stream.eatWhile(/\\w/);\n    cur = stream.current();\n    if(atoms.indexOf(cur) !== -1) {\n      state.extenStart = true;\n      switch(cur) {\n        case 'same': state.extenSame = true; break;\n        case 'include':\n        case 'switch':\n        case 'ignorepat':\n          state.extenInclude = true;break;\n        default:break;\n      }\n      return \"atom\";\n    }\n  }\n\n  return {\n    startState: function() {\n      return {\n        blockComment: false,\n        extenStart: false,\n        extenSame:  false,\n        extenInclude: false,\n        extenExten: false,\n        extenPriority: false,\n        extenApplication: false\n      };\n    },\n    token: function(stream, state) {\n\n      var cur = '';\n      if(stream.eatSpace()) return null;\n      // extension started\n      if(state.extenStart){\n        stream.eatWhile(/[^\\s]/);\n        cur = stream.current();\n        if(/^=>?$/.test(cur)){\n          state.extenExten = true;\n          state.extenStart = false;\n          return \"strong\";\n        } else {\n          state.extenStart = false;\n          stream.skipToEnd();\n          return \"error\";\n        }\n      } else if(state.extenExten) {\n        // set exten and priority\n        state.extenExten = false;\n        state.extenPriority = true;\n        stream.eatWhile(/[^,]/);\n        if(state.extenInclude) {\n          stream.skipToEnd();\n          state.extenPriority = false;\n          state.extenInclude = false;\n        }\n        if(state.extenSame) {\n          state.extenPriority = false;\n          state.extenSame = false;\n          state.extenApplication = true;\n        }\n        return \"tag\";\n      } else if(state.extenPriority) {\n        state.extenPriority = false;\n        state.extenApplication = true;\n        stream.next(); // get comma\n        if(state.extenSame) return null;\n        stream.eatWhile(/[^,]/);\n        return \"number\";\n      } else if(state.extenApplication) {\n        stream.eatWhile(/,/);\n        cur = stream.current();\n        if(cur === ',') return null;\n        stream.eatWhile(/\\w/);\n        cur = stream.current().toLowerCase();\n        state.extenApplication = false;\n        if(apps.indexOf(cur) !== -1){\n          return \"def strong\";\n        }\n      } else{\n        return basicToken(stream,state);\n      }\n\n      return null;\n    },\n\n    blockCommentStart: \";--\",\n    blockCommentEnd: \"--;\",\n    lineComment: \";\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-asterisk\", \"asterisk\");\n\n});\n"]}