API
function parse(message)
Parses Slack message and returns a tree (Node
).
Arguments
Name | Type | Description |
---|---|---|
message | String | a Slack message to parse |
Returns
Type | Description |
---|---|
Root | A root node of the parsed message tree |
interface Node
Represents each parts of the message, its type and properties.
Every node at least have one property, type
.
Name | Type | Description |
---|---|---|
type | Number(NodeType) | Type of the node |
source | String | Raw string of the node |
You can test the type with NodeType
object (which is actually TypeScript enum).
import { NodeType } from "slack-message-parser";
switch (node.type) {
case NodeType.Text:
// ...
case NodeType.ChannelLink:
// ...
}
The names of Node and NodeType are one-to-one equivalent (e.g. Text
node have type
property that the value is NodeType.Text
).
Root
node
A node sits on top of the tree. Every parse result have this node as its root node.
Properties
Name | Type | Description |
---|---|---|
children | Node[] | Child nodes |
Text
node
Texts.
Properties
Name | Type | Description |
---|---|---|
text | String | Text content |
ChannelLink
node
Link to a channel.
Properties
Name | Type | Description |
---|---|---|
channelID | String | An ID of the channel |
label | Node[] | undefined | Display texts for the link |
UserLink
node
Link to a user.
Properties
Name | Type | Description |
---|---|---|
userId | String | An ID of the user |
label | Node[] | undefined | Display texts for the user |
URL
node
Link other than channels and users (e.g. https://foo.bar
, mailto:foo@bar
).
Properties
Name | Type | Description |
---|---|---|
url | String | A link url |
label | Node[] | undefined | Display texts for the link |
Command
node
Special commands like <!date>
, <!everyone>
, <!subteam^id|@handle>
, and more.
For more details, please refer Formatting messages | Slack.
Properties
Name | Type | Description |
---|---|---|
name | String | A name of the command |
arguments | String[] | Command arguments(prefixed by ^ , ID is an argument of <!subteam^ID> ) |
label | Node[] | undefined | Display texts for the link |
Emoji
node
Emojis!
Properties
Name | Type | Description |
---|---|---|
name | String | A name of the emoji (the text between both : s) |
variation | String | undefined | Emoji variation, currently skin-tone- only |
PreText
node
Code block. Multi-line codes.
Properties
Name | Type | Description |
---|---|---|
text | String | Text content |
Code
node
Inline code.
Properties
Name | Type | Description |
---|---|---|
text | String | Text content |
Italic
/Bold
/Strike
/Quote
node
Represents text decorations. Each nodes just have decoration information, so it acts as container (does not hold texts directly).
Properties
Name | Type | Description |
---|---|---|
children | Node[] | Child nodes |