import {
  __commonJS
} from "/build/_shared/chunk-PNG5AS42.js";

// ../../node_modules/highlight.js/lib/languages/moonscript.js
var require_moonscript = __commonJS({
  "../../node_modules/highlight.js/lib/languages/moonscript.js"(exports, module) {
    function moonscript(hljs) {
      const KEYWORDS = {
        keyword: (
          // Moonscript keywords
          "if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using"
        ),
        literal: "true false nil",
        built_in: "_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"
      };
      const JS_IDENT_RE = "[A-Za-z$_][0-9A-Za-z$_]*";
      const SUBST = {
        className: "subst",
        begin: /#\{/,
        end: /\}/,
        keywords: KEYWORDS
      };
      const EXPRESSIONS = [
        hljs.inherit(
          hljs.C_NUMBER_MODE,
          {
            starts: {
              end: "(\\s*/)?",
              relevance: 0
            }
          }
        ),
        // a number tries to eat the following slash to prevent treating it as a regexp
        {
          className: "string",
          variants: [
            {
              begin: /'/,
              end: /'/,
              contains: [hljs.BACKSLASH_ESCAPE]
            },
            {
              begin: /"/,
              end: /"/,
              contains: [
                hljs.BACKSLASH_ESCAPE,
                SUBST
              ]
            }
          ]
        },
        {
          className: "built_in",
          begin: "@__" + hljs.IDENT_RE
        },
        {
          begin: "@" + hljs.IDENT_RE
          // relevance booster on par with CoffeeScript
        },
        {
          begin: hljs.IDENT_RE + "\\\\" + hljs.IDENT_RE
          // inst\method
        }
      ];
      SUBST.contains = EXPRESSIONS;
      const TITLE = hljs.inherit(hljs.TITLE_MODE, {
        begin: JS_IDENT_RE
      });
      const POSSIBLE_PARAMS_RE = "(\\(.*\\)\\s*)?\\B[-=]>";
      const PARAMS = {
        className: "params",
        begin: "\\([^\\(]",
        returnBegin: true,
        /* We need another contained nameless mode to not have every nested
        pair of parens to be called "params" */
        contains: [
          {
            begin: /\(/,
            end: /\)/,
            keywords: KEYWORDS,
            contains: ["self"].concat(EXPRESSIONS)
          }
        ]
      };
      return {
        name: "MoonScript",
        aliases: ["moon"],
        keywords: KEYWORDS,
        illegal: /\/\*/,
        contains: EXPRESSIONS.concat([
          hljs.COMMENT("--", "$"),
          {
            className: "function",
            // function: -> =>
            begin: "^\\s*" + JS_IDENT_RE + "\\s*=\\s*" + POSSIBLE_PARAMS_RE,
            end: "[-=]>",
            returnBegin: true,
            contains: [
              TITLE,
              PARAMS
            ]
          },
          {
            begin: /[\(,:=]\s*/,
            // anonymous function start
            relevance: 0,
            contains: [
              {
                className: "function",
                begin: POSSIBLE_PARAMS_RE,
                end: "[-=]>",
                returnBegin: true,
                contains: [PARAMS]
              }
            ]
          },
          {
            className: "class",
            beginKeywords: "class",
            end: "$",
            illegal: /[:="\[\]]/,
            contains: [
              {
                beginKeywords: "extends",
                endsWithParent: true,
                illegal: /[:="\[\]]/,
                contains: [TITLE]
              },
              TITLE
            ]
          },
          {
            className: "name",
            // table
            begin: JS_IDENT_RE + ":",
            end: ":",
            returnBegin: true,
            returnEnd: true,
            relevance: 0
          }
        ])
      };
    }
    module.exports = moonscript;
  }
});
export default require_moonscript();
//# sourceMappingURL=/build/_shared/moonscript-UPWLQUHB.js.map
