import {
  __commonJS,
  __name
} from "./chunk-MM7DTO55.js";

// ../node_modules/highlight.js/lib/languages/asciidoc.js
var require_asciidoc = __commonJS({
  "../node_modules/highlight.js/lib/languages/asciidoc.js"(exports, module) {
    function source(re) {
      if (!re) return null;
      if (typeof re === "string") return re;
      return re.source;
    }
    __name(source, "source");
    function concat(...args) {
      const joined = args.map((x) => source(x)).join("");
      return joined;
    }
    __name(concat, "concat");
    function asciidoc(hljs) {
      const HORIZONTAL_RULE = {
        begin: "^'{3,}[ \\t]*$",
        relevance: 10
      };
      const ESCAPED_FORMATTING = [
        // escaped constrained formatting marks (i.e., \* \_ or \`)
        {
          begin: /\\[*_`]/
        },
        // escaped unconstrained formatting marks (i.e., \\** \\__ or \\``)
        // must ignore until the next formatting marks
        // this rule might not be 100% compliant with Asciidoctor 2.0 but we are entering undefined behavior territory...
        {
          begin: /\\\\\*{2}[^\n]*?\*{2}/
        },
        {
          begin: /\\\\_{2}[^\n]*_{2}/
        },
        {
          begin: /\\\\`{2}[^\n]*`{2}/
        },
        // guard: constrained formatting mark may not be preceded by ":", ";" or
        // "}". match these so the constrained rule doesn't see them
        {
          begin: /[:;}][*_`](?![*_`])/
        }
      ];
      const STRONG = [
        // inline unconstrained strong (single line)
        {
          className: "strong",
          begin: /\*{2}([^\n]+?)\*{2}/
        },
        // inline unconstrained strong (multi-line)
        {
          className: "strong",
          begin: concat(
            /\*\*/,
            /((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,
            /(\*(?!\*)|\\[^\n]|[^*\n\\])*/,
            /\*\*/
          ),
          relevance: 0
        },
        // inline constrained strong (single line)
        {
          className: "strong",
          // must not precede or follow a word character
          begin: /\B\*(\S|\S[^\n]*?\S)\*(?!\w)/
        },
        // inline constrained strong (multi-line)
        {
          className: "strong",
          // must not precede or follow a word character
          begin: /\*[^\s]([^\n]+\n)+([^\n]+)\*/
        }
      ];
      const EMPHASIS = [
        // inline unconstrained emphasis (single line)
        {
          className: "emphasis",
          begin: /_{2}([^\n]+?)_{2}/
        },
        // inline unconstrained emphasis (multi-line)
        {
          className: "emphasis",
          begin: concat(
            /__/,
            /((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,
            /(_(?!_)|\\[^\n]|[^_\n\\])*/,
            /__/
          ),
          relevance: 0
        },
        // inline constrained emphasis (single line)
        {
          className: "emphasis",
          // must not precede or follow a word character
          begin: /\b_(\S|\S[^\n]*?\S)_(?!\w)/
        },
        // inline constrained emphasis (multi-line)
        {
          className: "emphasis",
          // must not precede or follow a word character
          begin: /_[^\s]([^\n]+\n)+([^\n]+)_/
        },
        // inline constrained emphasis using single quote (legacy)
        {
          className: "emphasis",
          // must not follow a word character or be followed by a single quote or space
          begin: "\\B'(?!['\\s])",
          end: "(\\n{2}|')",
          // allow escaped single quote followed by word char
          contains: [{
            begin: "\\\\'\\w",
            relevance: 0
          }],
          relevance: 0
        }
      ];
      const ADMONITION = {
        className: "symbol",
        begin: "^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",
        relevance: 10
      };
      const BULLET_LIST = {
        className: "bullet",
        begin: "^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"
      };
      return {
        name: "AsciiDoc",
        aliases: ["adoc"],
        contains: [
          // block comment
          hljs.COMMENT(
            "^/{4,}\\n",
            "\\n/{4,}$",
            // can also be done as...
            // '^/{4,}$',
            // '^/{4,}$',
            {
              relevance: 10
            }
          ),
          // line comment
          hljs.COMMENT(
            "^//",
            "$",
            {
              relevance: 0
            }
          ),
          // title
          {
            className: "title",
            begin: "^\\.\\w.*$"
          },
          // example, admonition & sidebar blocks
          {
            begin: "^[=\\*]{4,}\\n",
            end: "\\n^[=\\*]{4,}$",
            relevance: 10
          },
          // headings
          {
            className: "section",
            relevance: 10,
            variants: [
              {
                begin: "^(={1,6})[ 	].+?([ 	]\\1)?$"
              },
              {
                begin: "^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"
              }
            ]
          },
          // document attributes
          {
            className: "meta",
            begin: "^:.+?:",
            end: "\\s",
            excludeEnd: true,
            relevance: 10
          },
          // block attributes
          {
            className: "meta",
            begin: "^\\[.+?\\]$",
            relevance: 0
          },
          // quoteblocks
          {
            className: "quote",
            begin: "^_{4,}\\n",
            end: "\\n_{4,}$",
            relevance: 10
          },
          // listing and literal blocks
          {
            className: "code",
            begin: "^[\\-\\.]{4,}\\n",
            end: "\\n[\\-\\.]{4,}$",
            relevance: 10
          },
          // passthrough blocks
          {
            begin: "^\\+{4,}\\n",
            end: "\\n\\+{4,}$",
            contains: [{
              begin: "<",
              end: ">",
              subLanguage: "xml",
              relevance: 0
            }],
            relevance: 10
          },
          BULLET_LIST,
          ADMONITION,
          ...ESCAPED_FORMATTING,
          ...STRONG,
          ...EMPHASIS,
          // inline smart quotes
          {
            className: "string",
            variants: [
              {
                begin: "``.+?''"
              },
              {
                begin: "`.+?'"
              }
            ]
          },
          // inline unconstrained emphasis
          {
            className: "code",
            begin: /`{2}/,
            end: /(\n{2}|`{2})/
          },
          // inline code snippets (TODO should get same treatment as strong and emphasis)
          {
            className: "code",
            begin: "(`.+?`|\\+.+?\\+)",
            relevance: 0
          },
          // indented literal block
          {
            className: "code",
            begin: "^[ \\t]",
            end: "$",
            relevance: 0
          },
          HORIZONTAL_RULE,
          // images and links
          {
            begin: "(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]",
            returnBegin: true,
            contains: [
              {
                begin: "(link|image:?):",
                relevance: 0
              },
              {
                className: "link",
                begin: "\\w",
                end: "[^\\[]+",
                relevance: 0
              },
              {
                className: "string",
                begin: "\\[",
                end: "\\]",
                excludeBegin: true,
                excludeEnd: true,
                relevance: 0
              }
            ],
            relevance: 10
          }
        ]
      };
    }
    __name(asciidoc, "asciidoc");
    module.exports = asciidoc;
  }
});

export {
  require_asciidoc
};
