1{"version":3,"sources":["../../node_modules/codemirror/mode/octave/octave.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","wordRegexp","words","RegExp","join","singleOperators","singleDelimiters","doubleOperators","doubleDelimiters","tripleDelimiters","expressionEnd","identifiers","builtins","keywords","tokenTranspose","stream","state","sol","peek","next","tokenize","tokenBase","tokenComment","match","skipToEnd","eatSpace","m","startState","token","style","lineComment","fold","defineMIME"],"mappings":"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","file":"octave.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(\"octave\", function() {\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  }\n\n  var singleOperators = new RegExp(\"^[\\\\+\\\\-\\\\*/&|\\\\^~<>!@'\\\\\\\\]\");\n  var singleDelimiters = new RegExp('^[\\\\(\\\\[\\\\{\\\\},:=;\\\\.]');\n  var doubleOperators = new RegExp(\"^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\\\.[\\\\+\\\\-\\\\*/\\\\^\\\\\\\\]))\");\n  var doubleDelimiters = new RegExp(\"^((!=)|(\\\\+=)|(\\\\-=)|(\\\\*=)|(/=)|(&=)|(\\\\|=)|(\\\\^=))\");\n  var tripleDelimiters = new RegExp(\"^((>>=)|(<<=))\");\n  var expressionEnd = new RegExp(\"^[\\\\]\\\\)]\");\n  var identifiers = new RegExp(\"^[_A-Za-z\\xa1-\\uffff][_A-Za-z0-9\\xa1-\\uffff]*\");\n\n  var builtins = wordRegexp([\n    'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos',\n    'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh',\n    'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones',\n    'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov',\n    'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot',\n    'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str',\n    'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember'\n  ]);\n\n  var keywords = wordRegexp([\n    'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction',\n    'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events',\n    'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until',\n    'continue', 'pkg'\n  ]);\n\n\n  // tokenizers\n  function tokenTranspose(stream, state) {\n    if (!stream.sol() && stream.peek() === '\\'') {\n      stream.next();\n      state.tokenize = tokenBase;\n      return 'operator';\n    }\n    state.tokenize = tokenBase;\n    return tokenBase(stream, state);\n  }\n\n\n  function tokenComment(stream, state) {\n    if (stream.match(/^.*%}/)) {\n      state.tokenize = tokenBase;\n      return 'comment';\n    };\n    stream.skipToEnd();\n    return 'comment';\n  }\n\n  function tokenBase(stream, state) {\n    // whitespaces\n    if (stream.eatSpace()) return null;\n\n    // Handle one line Comments\n    if (stream.match('%{')){\n      state.tokenize = tokenComment;\n      stream.skipToEnd();\n      return 'comment';\n    }\n\n    if (stream.match(/^[%#]/)){\n      stream.skipToEnd();\n      return 'comment';\n    }\n\n    // Handle Number Literals\n    if (stream.match(/^[0-9\\.+-]/, false)) {\n      if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) {\n        stream.tokenize = tokenBase;\n        return 'number'; };\n      if (stream.match(/^[+-]?\\d*\\.\\d+([EeDd][+-]?\\d+)?[ij]?/)) { return 'number'; };\n      if (stream.match(/^[+-]?\\d+([EeDd][+-]?\\d+)?[ij]?/)) { return 'number'; };\n    }\n    if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; };\n\n    // Handle Strings\n    var m = stream.match(/^\"(?:[^\"]|\"\")*(\"|$)/) || stream.match(/^'(?:[^']|'')*('|$)/)\n    if (m) { return m[1] ? 'string' : \"string error\"; }\n\n    // Handle words\n    if (stream.match(keywords)) { return 'keyword'; } ;\n    if (stream.match(builtins)) { return 'builtin'; } ;\n    if (stream.match(identifiers)) { return 'variable'; } ;\n\n    if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; };\n    if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; };\n\n    if (stream.match(expressionEnd)) {\n      state.tokenize = tokenTranspose;\n      return null;\n    };\n\n\n    // Handle non-detected items\n    stream.next();\n    return 'error';\n  };\n\n\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase\n      };\n    },\n\n    token: function(stream, state) {\n      var style = state.tokenize(stream, state);\n      if (style === 'number' || style === 'variable'){\n        state.tokenize = tokenTranspose;\n      }\n      return style;\n    },\n\n    lineComment: '%',\n\n    fold: 'indent'\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-octave\", \"octave\");\n\n});\n"]}