{"version":3,"sources":["../../node_modules/codemirror/mode/apl/apl.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","builtInOps",".","\\","/","⌿","⍀","¨","⍣","builtInFuncs","+","−","×","÷","⌈","⌊","∣","⍳","?","⋆","⍟","○","!","⌹","<","≤","=",">","≥","≠","≡","≢","∈","⍷","∪","∩","∼","∨","∧","⍱","⍲","⍴",",","⍪","⌽","⊖","⍉","↑","↓","⊂","⊃","⌷","⍋","⍒","⊤","⊥","⍕","⍎","⊣","⊢","isOperator","isNiladic","isFunction","isArrow","isComment","stringEater","type","prev","c","startState","func","op","string","escape","token","stream","state","ch","funcName","eatSpace","next","eatWhile","test","skipToEnd","peek","defineMIME"],"mappings":"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","file":"apl.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\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(\"apl\", function() {\n var builtInOps = {\n \".\": \"innerProduct\",\n \"\\\\\": \"scan\",\n \"/\": \"reduce\",\n \"⌿\": \"reduce1Axis\",\n \"⍀\": \"scan1Axis\",\n \"¨\": \"each\",\n \"⍣\": \"power\"\n };\n var builtInFuncs = {\n \"+\": [\"conjugate\", \"add\"],\n \"−\": [\"negate\", \"subtract\"],\n \"×\": [\"signOf\", \"multiply\"],\n \"÷\": [\"reciprocal\", \"divide\"],\n \"⌈\": [\"ceiling\", \"greaterOf\"],\n \"⌊\": [\"floor\", \"lesserOf\"],\n \"∣\": [\"absolute\", \"residue\"],\n \"⍳\": [\"indexGenerate\", \"indexOf\"],\n \"?\": [\"roll\", \"deal\"],\n \"⋆\": [\"exponentiate\", \"toThePowerOf\"],\n \"⍟\": [\"naturalLog\", \"logToTheBase\"],\n \"○\": [\"piTimes\", \"circularFuncs\"],\n \"!\": [\"factorial\", \"binomial\"],\n \"⌹\": [\"matrixInverse\", \"matrixDivide\"],\n \"<\": [null, \"lessThan\"],\n \"≤\": [null, \"lessThanOrEqual\"],\n \"=\": [null, \"equals\"],\n \">\": [null, \"greaterThan\"],\n \"≥\": [null, \"greaterThanOrEqual\"],\n \"≠\": [null, \"notEqual\"],\n \"≡\": [\"depth\", \"match\"],\n \"≢\": [null, \"notMatch\"],\n \"∈\": [\"enlist\", \"membership\"],\n \"⍷\": [null, \"find\"],\n \"∪\": [\"unique\", \"union\"],\n \"∩\": [null, \"intersection\"],\n \"∼\": [\"not\", \"without\"],\n \"∨\": [null, \"or\"],\n \"∧\": [null, \"and\"],\n \"⍱\": [null, \"nor\"],\n \"⍲\": [null, \"nand\"],\n \"⍴\": [\"shapeOf\", \"reshape\"],\n \",\": [\"ravel\", \"catenate\"],\n \"⍪\": [null, \"firstAxisCatenate\"],\n \"⌽\": [\"reverse\", \"rotate\"],\n \"⊖\": [\"axis1Reverse\", \"axis1Rotate\"],\n \"⍉\": [\"transpose\", null],\n \"↑\": [\"first\", \"take\"],\n \"↓\": [null, \"drop\"],\n \"⊂\": [\"enclose\", \"partitionWithAxis\"],\n \"⊃\": [\"diclose\", \"pick\"],\n \"⌷\": [null, \"index\"],\n \"⍋\": [\"gradeUp\", null],\n \"⍒\": [\"gradeDown\", null],\n \"⊤\": [\"encode\", null],\n \"⊥\": [\"decode\", null],\n \"⍕\": [\"format\", \"formatByExample\"],\n \"⍎\": [\"execute\", null],\n \"⊣\": [\"stop\", \"left\"],\n \"⊢\": [\"pass\", \"right\"]\n };\n\n var isOperator = /[\\.\\/⌿⍀¨⍣]/;\n var isNiladic = /⍬/;\n var isFunction = /[\\+−×÷⌈⌊∣⍳\\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/;\n var isArrow = /←/;\n var isComment = /[⍝#].*$/;\n\n var stringEater = function(type) {\n var prev;\n prev = false;\n return function(c) {\n prev = c;\n if (c === type) {\n return prev === \"\\\\\";\n }\n return true;\n };\n };\n return {\n startState: function() {\n return {\n prev: false,\n func: false,\n op: false,\n string: false,\n escape: false\n };\n },\n token: function(stream, state) {\n var ch, funcName;\n if (stream.eatSpace()) {\n return null;\n }\n ch = stream.next();\n if (ch === '\"' || ch === \"'\") {\n stream.eatWhile(stringEater(ch));\n stream.next();\n state.prev = true;\n return \"string\";\n }\n if (/[\\[{\\(]/.test(ch)) {\n state.prev = false;\n return null;\n }\n if (/[\\]}\\)]/.test(ch)) {\n state.prev = true;\n return null;\n }\n if (isNiladic.test(ch)) {\n state.prev = false;\n return \"niladic\";\n }\n if (/[¯\\d]/.test(ch)) {\n if (state.func) {\n state.func = false;\n state.prev = false;\n } else {\n state.prev = true;\n }\n stream.eatWhile(/[\\w\\.]/);\n return \"number\";\n }\n if (isOperator.test(ch)) {\n return \"operator apl-\" + builtInOps[ch];\n }\n if (isArrow.test(ch)) {\n return \"apl-arrow\";\n }\n if (isFunction.test(ch)) {\n funcName = \"apl-\";\n if (builtInFuncs[ch] != null) {\n if (state.prev) {\n funcName += builtInFuncs[ch][1];\n } else {\n funcName += builtInFuncs[ch][0];\n }\n }\n state.func = true;\n state.prev = false;\n return \"function \" + funcName;\n }\n if (isComment.test(ch)) {\n stream.skipToEnd();\n return \"comment\";\n }\n if (ch === \"∘\" && stream.peek() === \".\") {\n stream.next();\n return \"function jot-dot\";\n }\n stream.eatWhile(/[\\w\\$_]/);\n state.prev = true;\n return \"keyword\";\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/apl\", \"apl\");\n\n});\n"]}