{"version":3,"file":"dtd-N9E8mrwW.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/dtd.js"],"sourcesContent":["var type;\nfunction ret(style, tp) {type = tp; return style;}\n\nfunction tokenBase(stream, state) {\n  var ch = stream.next();\n\n  if (ch == \"<\" && stream.eat(\"!\") ) {\n    if (stream.eatWhile(/[\\-]/)) {\n      state.tokenize = tokenSGMLComment;\n      return tokenSGMLComment(stream, state);\n    } else if (stream.eatWhile(/[\\w]/)) return ret(\"keyword\", \"doindent\");\n  } else if (ch == \"<\" && stream.eat(\"?\")) { //xml declaration\n    state.tokenize = inBlock(\"meta\", \"?>\");\n    return ret(\"meta\", ch);\n  } else if (ch == \"#\" && stream.eatWhile(/[\\w]/)) return ret(\"atom\", \"tag\");\n  else if (ch == \"|\") return ret(\"keyword\", \"separator\");\n  else if (ch.match(/[\\(\\)\\[\\]\\-\\.,\\+\\?>]/)) return ret(null, ch);//if(ch === \">\") return ret(null, \"endtag\"); else\n  else if (ch.match(/[\\[\\]]/)) return ret(\"rule\", ch);\n  else if (ch == \"\\\"\" || ch == \"'\") {\n    state.tokenize = tokenString(ch);\n    return state.tokenize(stream, state);\n  } else if (stream.eatWhile(/[a-zA-Z\\?\\+\\d]/)) {\n    var sc = stream.current();\n    if( sc.substr(sc.length-1,sc.length).match(/\\?|\\+/) !== null )stream.backUp(1);\n    return ret(\"tag\", \"tag\");\n  } else if (ch == \"%\" || ch == \"*\" ) return ret(\"number\", \"number\");\n  else {\n    stream.eatWhile(/[\\w\\\\\\-_%.{,]/);\n    return ret(null, null);\n  }\n}\n\nfunction tokenSGMLComment(stream, state) {\n  var dashes = 0, ch;\n  while ((ch = stream.next()) != null) {\n    if (dashes >= 2 && ch == \">\") {\n      state.tokenize = tokenBase;\n      break;\n    }\n    dashes = (ch == \"-\") ? dashes + 1 : 0;\n  }\n  return ret(\"comment\", \"comment\");\n}\n\nfunction tokenString(quote) {\n  return function(stream, state) {\n    var escaped = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (ch == quote && !escaped) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      escaped = !escaped && ch == \"\\\\\";\n    }\n    return ret(\"string\", \"tag\");\n  };\n}\n\nfunction inBlock(style, terminator) {\n  return function(stream, state) {\n    while (!stream.eol()) {\n      if (stream.match(terminator)) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      stream.next();\n    }\n    return style;\n  };\n}\n\nexport const dtd = {\n  name: \"dtd\",\n  startState: function() {\n    return {tokenize: tokenBase,\n            baseIndent: 0,\n            stack: []};\n  },\n\n  token: function(stream, state) {\n    if (stream.eatSpace()) return null;\n    var style = state.tokenize(stream, state);\n\n    var context = state.stack[state.stack.length-1];\n    if (stream.current() == \"[\" || type === \"doindent\" || type == \"[\") state.stack.push(\"rule\");\n    else if (type === \"endtag\") state.stack[state.stack.length-1] = \"endtag\";\n    else if (stream.current() == \"]\" || type == \"]\" || (type == \">\" && context == \"rule\")) state.stack.pop();\n    else if (type == \"[\") state.stack.push(\"[\");\n    return style;\n  },\n\n  indent: function(state, textAfter, cx) {\n    var n = state.stack.length;\n\n    if( textAfter.charAt(0) === ']' )n--;\n    else if(textAfter.substr(textAfter.length-1, textAfter.length) === \">\"){\n      if(textAfter.substr(0,1) === \"<\") {}\n      else if( type == \"doindent\" && textAfter.length > 1 ) {}\n      else if( type == \"doindent\")n--;\n      else if( type == \">\" && textAfter.length > 1) {}\n      else if( type == \"tag\" && textAfter !== \">\") {}\n      else if( type == \"tag\" && state.stack[state.stack.length-1] == \"rule\")n--;\n      else if( type == \"tag\")n++;\n      else if( textAfter === \">\" && state.stack[state.stack.length-1] == \"rule\" && type === \">\")n--;\n      else if( textAfter === \">\" && state.stack[state.stack.length-1] == \"rule\") {}\n      else if( textAfter.substr(0,1) !== \"<\" && textAfter.substr(0,1) === \">\" )n=n-1;\n      else if( textAfter === \">\") {}\n      else n=n-1;\n      //over rule them all\n      if(type == null || type == \"]\")n--;\n    }\n\n    return state.baseIndent + n * cx.unit;\n  },\n\n  languageData: {\n    indentOnInput: /^\\s*[\\]>]$/\n  }\n};\n\n"],"names":["type","ret","style","tp","tokenBase","stream","state","quote","terminator","ch","next","eat","tokenize","eol","match","eatWhile","escaped","sc","current","substr","length","backUp","tokenSGMLComment","dashes","dtd","name","startState","baseIndent","stack","token","eatSpace","context","push","pop","indent","textAfter","cx","n","charAt","unit","languageData","indentOnInput"],"mappings":"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","x_google_ignoreList":[0]}