1{"version":3,"sources":["../../node_modules/codemirror/mode/vhdl/vhdl.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","words","str","obj","split","i","length","allCaps","toUpperCase","firstCap","charAt","slice","metaHook","stream","eatWhile","defineMode","config","parserConfig","indentUnit","atoms","hooks","`","$","multiLineStrings","keywords","blockKeywords","isOperatorChar","curPunc","tokenBase","state","ch","next","result","tokenize","tokenString2","tokenString","test","eat","skipToEnd","cur","current","propertyIsEnumerable","toLowerCase","quote","escaped","end","Context","indented","column","type","align","prev","this","pushContext","col","context","popContext","t","startState","basecolumn","startOfLine","token","ctx","sol","indentation","eatSpace","style","indent","textAfter","firstChar","closing","electricChars","defineMIME"],"mappings":"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","file":"vhdl.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Originally written by Alf Nielsen, re-written by Michael Zhou\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\nfunction words(str) {\n  var obj = {}, words = str.split(\",\");\n  for (var i = 0; i < words.length; ++i) {\n    var allCaps = words[i].toUpperCase();\n    var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1);\n    obj[words[i]] = true;\n    obj[allCaps] = true;\n    obj[firstCap] = true;\n  }\n  return obj;\n}\n\nfunction metaHook(stream) {\n  stream.eatWhile(/[\\w\\$_]/);\n  return \"meta\";\n}\n\nCodeMirror.defineMode(\"vhdl\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit,\n      atoms = parserConfig.atoms || words(\"null\"),\n      hooks = parserConfig.hooks || {\"`\": metaHook, \"$\": metaHook},\n      multiLineStrings = parserConfig.multiLineStrings;\n\n  var keywords = words(\"abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block,\" +\n      \"body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case,\" +\n      \"end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for,\" +\n      \"function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage,\" +\n      \"literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map,\" +\n      \"postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal,\" +\n      \"sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor\");\n\n  var blockKeywords = words(\"architecture,entity,begin,case,port,else,elsif,end,for,function,if\");\n\n  var isOperatorChar = /[&|~><!\\)\\(*#%@+\\/=?\\:;}{,\\.\\^\\-\\[\\]]/;\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (hooks[ch]) {\n      var result = hooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n    if (ch == '\"') {\n      state.tokenize = tokenString2(ch);\n      return state.tokenize(stream, state);\n    }\n    if (ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (/[\\d']/.test(ch)) {\n      stream.eatWhile(/[\\w\\.']/);\n      return \"number\";\n    }\n    if (ch == \"-\") {\n      if (stream.eat(\"-\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_]/);\n    var cur = stream.current();\n    if (keywords.propertyIsEnumerable(cur.toLowerCase())) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"keyword\";\n    }\n    if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n    return \"variable\";\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) {end = true; break;}\n        escaped = !escaped && next == \"--\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n  function tokenString2(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"--\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return \"string-2\";\n    };\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    return state.context = new Context(state.indented, col, type, null, state.context);\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n  return {\n    startState: function(basecolumn) {\n      return {\n        tokenize: null,\n        context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if ((curPunc == \";\" || curPunc == \":\") && ctx.type == \"statement\") popContext(state);\n      else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"}\") {\n        while (ctx.type == \"statement\") ctx = popContext(state);\n        if (ctx.type == \"}\") ctx = popContext(state);\n        while (ctx.type == \"statement\") ctx = popContext(state);\n      }\n      else if (curPunc == ctx.type) popContext(state);\n      else if (ctx.type == \"}\" || ctx.type == \"top\" || (ctx.type == \"statement\" && curPunc == \"newstatement\"))\n        pushContext(state, stream.column(), \"statement\");\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : indentUnit);\n      else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricChars: \"{}\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-vhdl\", \"vhdl\");\n\n});\n"]}