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"]}