UNPKG

@akarui/aoi.parser

Version:
95 lines 3.48 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setup = exports.parseChatInputOptions = exports.parse = exports.createAst = void 0; const block_1 = __importDefault(require("./block")); const components_1 = require("./components"); const utils_1 = require("./utils"); function createAst(input) { input = input .replaceAll("\\{", "#RIGHT_BRACKET#") .replaceAll("\\}", "#LEFT_BRACKET#").replaceAll("\\:", "#COLON#"); let parent = new block_1.default(""); for (let char of input) { if (char === "{") { const child = new block_1.default(""); parent.addChild(child); parent.add(child.name); child.setParent(parent); parent = child; } else if (char === "}") { parent = parent.parent; } else { parent.add(char); } } return parent; } exports.createAst = createAst; function parse(input) { const ast = createAst(input); const data = (0, components_1.parseMessage)(ast); let options; for (const child of ast.children) { const [name, value] = child.splits; if (name !== "extraOptions") { continue; } options = (0, components_1.parseExtraOptions)(child); } return { data, options }; } exports.parse = parse; function parseChatInputOptions(ast) { const options = []; for (const child of ast.children) { const [name, _] = child.splits.map(utils_1.removeEscapesAndTrim); if (name === "string") { options.push((0, components_1.parseChatInputStringOptions)(child)); } else if (name === "integer" || "number") { options.push((0, components_1.parseChatInputNumberOptions)(child)); } else if (name === "user" || name === "role" || name === "mentionable") { options.push((0, components_1.parseChatInputUserRoleMentionableOptions)(child)); } else if (name === "channel") { options.push((0, components_1.parseChatInputChannelOptions)(child)); } else if (name === "boolean") { options.push((0, components_1.parseChatInputBooleanOptions)(child)); } else if (name === "subCommand") { options.push((0, components_1.parseChatInputSubCommandOptions)(child)); } else if (name === "subCommandGroup") { options.push((0, components_1.parseChatInputSubCommandGroupOptions)(child)); } } return options; } exports.parseChatInputOptions = parseChatInputOptions; function setup(Util) { Util.parsers.ErrorHandler = parse; Util.parsers.ComponentParser = (data) => { return createAst(data).children.map(components_1.parseComponents); }; Util.parsers.EmbedParser = (data) => { return createAst(data).children.map(x => (0, components_1.parseEmbed)(x).data); }; Util.parsers.FileParser = (data) => { return createAst(data).children.map(components_1.parseFiles); }; Util.parsers.OptionParser = (data) => { return createAst(data).children.map(components_1.parseExtraOptions); }; Util.parsers.SlashOptionsParser = parseChatInputOptions; } exports.setup = setup; //# sourceMappingURL=index.js.map