@bhsd/codemirror-mediawiki
Version: 
Modified CodeMirror mode based on wikimedia/mediawiki-extensions-CodeMirror
179 lines (176 loc) • 4.3 kB
JavaScript
// src/config.ts
import { tags, Tag } from "@lezer/highlight";
// ../wikiparser-node/config/default.json
var html = [
  [
    "b",
    "bdi",
    "del",
    "i",
    "ins",
    "u",
    "font",
    "big",
    "small",
    "sub",
    "sup",
    "h1",
    "h2",
    "h3",
    "h4",
    "h5",
    "h6",
    "cite",
    "code",
    "em",
    "s",
    "strike",
    "strong",
    "tt",
    "var",
    "div",
    "center",
    "blockquote",
    "ol",
    "ul",
    "dl",
    "table",
    "caption",
    "pre",
    "ruby",
    "rb",
    "rp",
    "rt",
    "rtc",
    "p",
    "span",
    "abbr",
    "dfn",
    "kbd",
    "samp",
    "data",
    "time",
    "mark",
    "tr",
    "td",
    "th",
    "q",
    "bdo"
  ],
  [
    "li",
    "dt",
    "dd"
  ],
  [
    "br",
    "wbr",
    "hr",
    "meta",
    "link"
  ]
];
// src/config.ts
/**
 * @file Configuration for the MediaWiki highlighting mode for CodeMirror.
 * @author MusikAnimal and others
 * @license GPL-2.0-or-later
 * @see https://gerrit.wikimedia.org/g/mediawiki/extensions/CodeMirror
 */
var htmlTags = /* @__PURE__ */ html.flat();
var voidHtmlTags = /* @__PURE__ */ (() => html[2])();
var selfClosingTags = /* @__PURE__ */ (() => html[1])();
var tokens = {
  apostrophes: "mw-apostrophes",
  comment: "mw-comment",
  convertBracket: "mw-convert-bracket",
  convertDelimiter: "mw-convert-delimiter",
  convertFlag: "mw-convert-flag",
  convertLang: "mw-convert-lang",
  doubleUnderscore: "mw-double-underscore",
  em: "mw-em",
  error: "mw-error",
  extLink: "mw-extlink",
  extLinkBracket: "mw-extlink-bracket",
  extLinkProtocol: "mw-extlink-protocol",
  extLinkText: "mw-extlink-text",
  extTag: "mw-exttag",
  extTagAttribute: "mw-exttag-attribute",
  extTagAttributeValue: "mw-exttag-attribute-value",
  extTagBracket: "mw-exttag-bracket",
  extTagName: "mw-exttag-name",
  fileDelimiter: "mw-file-delimiter",
  fileText: "mw-file-text",
  freeExtLink: "mw-free-extlink",
  freeExtLinkProtocol: "mw-free-extlink-protocol",
  hr: "mw-hr",
  htmlEntity: "mw-entity",
  htmlTagAttribute: "mw-htmltag-attribute",
  htmlTagAttributeValue: "mw-htmltag-attribute-value",
  htmlTagBracket: "mw-htmltag-bracket",
  htmlTagName: "mw-htmltag-name",
  ignored: "mw-ignored",
  imageParameter: "mw-image-parameter",
  linkBracket: "mw-link-bracket",
  linkDelimiter: "mw-link-delimiter",
  linkPageName: "mw-link-pagename",
  linkText: "mw-link-text",
  linkToSection: "mw-link-tosection",
  list: "mw-list",
  magicLink: "mw-magic-link",
  pageName: "mw-pagename",
  parserFunction: "mw-parserfunction",
  parserFunctionBracket: "mw-parserfunction-bracket",
  parserFunctionDelimiter: "mw-parserfunction-delimiter",
  parserFunctionName: "mw-parserfunction-name",
  redirect: "mw-redirect",
  section: "mw-section",
  sectionHeader: "mw-section-header",
  signature: "mw-signature",
  skipFormatting: "mw-skipformatting",
  strong: "mw-strong",
  tableBracket: "mw-table-bracket",
  tableCaption: "mw-table-caption",
  tableDefinition: "mw-table-definition",
  tableDefinitionValue: "mw-table-definition-value",
  tableDelimiter: "mw-table-delimiter",
  tableDelimiter2: "mw-table-delimiter2",
  tableTd: "mw-table-td",
  tableTh: "mw-table-th",
  template: "mw-template",
  templateArgumentName: "mw-template-argument-name",
  templateBracket: "mw-template-bracket",
  templateDelimiter: "mw-template-delimiter",
  templateName: "mw-template-name",
  templateVariable: "mw-templatevariable",
  templateVariableBracket: "mw-templatevariable-bracket",
  templateVariableDelimiter: "mw-templatevariable-delimiter",
  templateVariableName: "mw-templatevariable-name"
};
var tokenTable = /* @__PURE__ */ (() => {
  const table = {
    variable: tags.variableName,
    "variable-2": tags.special(tags.variableName),
    "string-2": tags.special(tags.string),
    def: tags.definition(tags.variableName),
    tag: tags.tagName,
    attribute: tags.attributeName,
    type: tags.typeName,
    builtin: tags.standard(tags.variableName),
    qualifier: tags.modifier,
    error: tags.invalid,
    header: tags.heading,
    property: tags.propertyName
  };
  for (const className of Object.values(tokens)) {
    table[className] = Tag.define();
  }
  return table;
})();
export {
  htmlTags,
  selfClosingTags,
  tokenTable,
  tokens,
  voidHtmlTags
};