{"version":3,"file":"wren.mjs","sources":["../../../../../../node_modules/highlight.js/lib/languages/wren.js"],"sourcesContent":["/*\nLanguage: Wren\nDescription: Think Smalltalk in a Lua-sized package with a dash of Erlang and wrapped up in a familiar, modern syntax.\nCategory: scripting\nAuthor: @joshgoebel\nMaintainer: @joshgoebel\nWebsite: https://wren.io/\n*/\n\n/** @type LanguageFn */\nfunction wren(hljs) {\n  const regex = hljs.regex;\n  const IDENT_RE = /[a-zA-Z]\\w*/;\n  const KEYWORDS = [\n    \"as\",\n    \"break\",\n    \"class\",\n    \"construct\",\n    \"continue\",\n    \"else\",\n    \"for\",\n    \"foreign\",\n    \"if\",\n    \"import\",\n    \"in\",\n    \"is\",\n    \"return\",\n    \"static\",\n    \"var\",\n    \"while\"\n  ];\n  const LITERALS = [\n    \"true\",\n    \"false\",\n    \"null\"\n  ];\n  const LANGUAGE_VARS = [\n    \"this\",\n    \"super\"\n  ];\n  const CORE_CLASSES = [\n    \"Bool\",\n    \"Class\",\n    \"Fiber\",\n    \"Fn\",\n    \"List\",\n    \"Map\",\n    \"Null\",\n    \"Num\",\n    \"Object\",\n    \"Range\",\n    \"Sequence\",\n    \"String\",\n    \"System\"\n  ];\n  const OPERATORS = [\n    \"-\",\n    \"~\",\n    /\\*/,\n    \"%\",\n    /\\.\\.\\./,\n    /\\.\\./,\n    /\\+/,\n    \"<<\",\n    \">>\",\n    \">=\",\n    \"<=\",\n    \"<\",\n    \">\",\n    /\\^/,\n    /!=/,\n    /!/,\n    /\\bis\\b/,\n    \"==\",\n    \"&&\",\n    \"&\",\n    /\\|\\|/,\n    /\\|/,\n    /\\?:/,\n    \"=\"\n  ];\n  const FUNCTION = {\n    relevance: 0,\n    match: regex.concat(/\\b(?!(if|while|for|else|super)\\b)/, IDENT_RE, /(?=\\s*[({])/),\n    className: \"title.function\"\n  };\n  const FUNCTION_DEFINITION = {\n    match: regex.concat(\n      regex.either(\n        regex.concat(/\\b(?!(if|while|for|else|super)\\b)/, IDENT_RE),\n        regex.either(...OPERATORS)\n      ),\n      /(?=\\s*\\([^)]+\\)\\s*\\{)/),\n    className: \"title.function\",\n    starts: { contains: [\n      {\n        begin: /\\(/,\n        end: /\\)/,\n        contains: [\n          {\n            relevance: 0,\n            scope: \"params\",\n            match: IDENT_RE\n          }\n        ]\n      }\n    ] }\n  };\n  const CLASS_DEFINITION = {\n    variants: [\n      { match: [\n        /class\\s+/,\n        IDENT_RE,\n        /\\s+is\\s+/,\n        IDENT_RE\n      ] },\n      { match: [\n        /class\\s+/,\n        IDENT_RE\n      ] }\n    ],\n    scope: {\n      2: \"title.class\",\n      4: \"title.class.inherited\"\n    },\n    keywords: KEYWORDS\n  };\n\n  const OPERATOR = {\n    relevance: 0,\n    match: regex.either(...OPERATORS),\n    className: \"operator\"\n  };\n\n  const TRIPLE_STRING = {\n    className: \"string\",\n    begin: /\"\"\"/,\n    end: /\"\"\"/\n  };\n\n  const PROPERTY = {\n    className: \"property\",\n    begin: regex.concat(/\\./, regex.lookahead(IDENT_RE)),\n    end: IDENT_RE,\n    excludeBegin: true,\n    relevance: 0\n  };\n\n  const FIELD = {\n    relevance: 0,\n    match: regex.concat(/\\b_/, IDENT_RE),\n    scope: \"variable\"\n  };\n\n  // CamelCase\n  const CLASS_REFERENCE = {\n    relevance: 0,\n    match: /\\b[A-Z]+[a-z]+([A-Z]+[a-z]+)*/,\n    scope: \"title.class\",\n    keywords: { _: CORE_CLASSES }\n  };\n\n  // TODO: add custom number modes\n  const NUMBER = hljs.C_NUMBER_MODE;\n\n  const SETTER = {\n    match: [\n      IDENT_RE,\n      /\\s*/,\n      /=/,\n      /\\s*/,\n      /\\(/,\n      IDENT_RE,\n      /\\)\\s*\\{/\n    ],\n    scope: {\n      1: \"title.function\",\n      3: \"operator\",\n      6: \"params\"\n    }\n  };\n\n  const COMMENT_DOCS = hljs.COMMENT(\n    /\\/\\*\\*/,\n    /\\*\\//,\n    { contains: [\n      {\n        match: /@[a-z]+/,\n        scope: \"doctag\"\n      },\n      \"self\"\n    ] }\n  );\n  const SUBST = {\n    scope: \"subst\",\n    begin: /%\\(/,\n    end: /\\)/,\n    contains: [\n      NUMBER,\n      CLASS_REFERENCE,\n      FUNCTION,\n      FIELD,\n      OPERATOR\n    ]\n  };\n  const STRING = {\n    scope: \"string\",\n    begin: /\"/,\n    end: /\"/,\n    contains: [\n      SUBST,\n      {\n        scope: \"char.escape\",\n        variants: [\n          { match: /\\\\\\\\|\\\\[\"0%abefnrtv]/ },\n          { match: /\\\\x[0-9A-F]{2}/ },\n          { match: /\\\\u[0-9A-F]{4}/ },\n          { match: /\\\\U[0-9A-F]{8}/ }\n        ]\n      }\n    ]\n  };\n  SUBST.contains.push(STRING);\n\n  const ALL_KWS = [\n    ...KEYWORDS,\n    ...LANGUAGE_VARS,\n    ...LITERALS\n  ];\n  const VARIABLE = {\n    relevance: 0,\n    match: regex.concat(\n      \"\\\\b(?!\",\n      ALL_KWS.join(\"|\"),\n      \"\\\\b)\",\n      /[a-zA-Z_]\\w*(?:[?!]|\\b)/\n    ),\n    className: \"variable\"\n  };\n\n  // TODO: reconsider this in the future\n  const ATTRIBUTE = {\n    // scope: \"meta\",\n    scope: \"comment\",\n    variants: [\n      {\n        begin: [\n          /#!?/,\n          /[A-Za-z_]+(?=\\()/\n        ],\n        beginScope: {\n          // 2: \"attr\"\n        },\n        keywords: { literal: LITERALS },\n        contains: [\n          // NUMBER,\n          // VARIABLE\n        ],\n        end: /\\)/\n      },\n      {\n        begin: [\n          /#!?/,\n          /[A-Za-z_]+/\n        ],\n        beginScope: {\n          // 2: \"attr\"\n        },\n        end: /$/\n      }\n    ]\n  };\n\n  return {\n    name: \"Wren\",\n    keywords: {\n      keyword: KEYWORDS,\n      \"variable.language\": LANGUAGE_VARS,\n      literal: LITERALS\n    },\n    contains: [\n      ATTRIBUTE,\n      NUMBER,\n      STRING,\n      TRIPLE_STRING,\n      COMMENT_DOCS,\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.C_BLOCK_COMMENT_MODE,\n      CLASS_REFERENCE,\n      CLASS_DEFINITION,\n      SETTER,\n      FUNCTION_DEFINITION,\n      FUNCTION,\n      OPERATOR,\n      FIELD,\n      PROPERTY,\n      VARIABLE\n    ]\n  };\n}\n\nmodule.exports = wren;\n"],"names":["wren","hljs","regex","IDENT_RE","KEYWORDS","LITERALS","LANGUAGE_VARS","CORE_CLASSES","OPERATORS","FUNCTION","FUNCTION_DEFINITION","CLASS_DEFINITION","OPERATOR","TRIPLE_STRING","PROPERTY","FIELD","CLASS_REFERENCE","NUMBER","SETTER","COMMENT_DOCS","SUBST","STRING","ALL_KWS","VARIABLE","wren_1"],"mappings":"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","x_google_ignoreList":[0]}