Package Exports
- slack-message-parser
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (slack-message-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
slack-message-parser
Parser library for Slack message format.
[Document]
Install
Requires Node.js >=v16.
npm i --save slack-message-parser
# yarn add slack-message-parserUsage
Usage with Typescript (recommended).
import slackMessageParser, { Node, NodeType } from "slack-message-parser";
const tree = slackMessageParser("Slack *message* ~to~ _parse_");
// tree is:
// {
// type: NodeType.Root,
// children: [
// {
// type: NodeType.Text,
// text: "Slack ",
// . source: "Slack "
// },
// {
// type: NodeType.Bold,
// children: [
// {
// type: NodeType.Text,
// text: "message"
// }
// ],
// . source: "*message*"
// },
// ...
// ],
// source: "Slack *message* ~to~ _parse_"
// }
// Write your own!
const toHTML = (node: Node): string => {
switch (node.type) {
case NodeType.Root:
return `<p>${node.children.map(toHTML).join("")}</p>`;
case NodeType.Text:
return node.text;
case NodeType.Bold:
return `<strong>${node.children.map(toHTML).join("")}</strong>`;
case NodeType.Italic:
return `<i>${node.children.map(toHTML).join("")}</i>`;
case NodeType.Strike:
return `<del>${node.children.map(toHTML).join("")}</del>`;
default:
// You can use `source` property, which every nodes have, to serialize unknown nodes as-is
return node.source;
}
};
console.log(toHTML(tree));
// Output:
// '<p>Slack <strong>message</strong> <del>to</del> <i>parse</i></p>'