UNPKG

slack-message-parser

Version:
70 lines (69 loc) 2.19 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = void 0; const Node_js_1 = require("./types/Node.js"); const parser_js_1 = __importDefault(require("./parser.js")); const parseText = (text) => { const children = []; let textBuffer = ""; const flush = () => { if (!textBuffer) { return; } children.push({ type: Node_js_1.NodeType.Text, text: textBuffer, source: textBuffer, }); textBuffer = ""; }; let i = 0; const l = text.length; while (i < l) { const match = (0, parser_js_1.default)(text, i, parseText); if (match) { flush(); const [node, position] = match; children.push(node); i = position; continue; } textBuffer += text.charAt(i); i += 1; } flush(); return children; }; /** * Parses a Slack message and returns a parsed Node tree. * * @param message - a Slack message to parse * @returns Root node of the parsed message tree */ const parse = (message) => { return { type: Node_js_1.NodeType.Root, children: parseText(message), source: message, }; }; exports.parse = parse; exports.default = exports.parse; __exportStar(require("./types/Node.js"), exports);