Abstract chat parser for üWave client applications.
npm install u-wave-parse-chat-markupChat markup parser for üWave client applications.
Installation - Usage - Supported Markup -
API - License




```
npm install --save u-wave-parse-chat-markup
`js
import parseChatMarkup from 'u-wave-parse-chat-markup';
const tree = parseChatMarkup('This is a test _message_, with some ~MARKUP~');
// tree =
[ 'This is a ',
{ type: 'bold', content: [ 'test' ] },
' ',
{ type: 'italic', content: [ 'message' ] },
', with some ',
{ type: 'strike', content: [ 'MARKUP' ] } ]
`
- Bolded text using asterisks_underscores_
- _Italics_ using Monospace
- using ` backticks `~tildes~
- Strikethrough using :colons:
- Emoji :smile: using @at-signs
- @-mentions using
``
parseChatMarkup(text, options={})
Returns an array/tree-like structure with parsed tokens.
Available options are:
- mentions - Array of (user)names that can be @-mentioned.
- emojiNames - Array of available :emoji: names, as strings, and without
colons. If an emoji name is not in this array, it's not parsed. For example:
``
emojiNames: ['smile', 'cry', 'hearts']
If you don't pass this list, all :emoji:-style strings will be parsed as
emoji, and you'll have to filter nonexistent emoji elsewhere in your app.
parseChatMarkup returns an array of tokens. Some markup can be nested, so
some tokens contain token arrays, too.
"Normal" text is embedded as a plain string. Other tokens are objects with a
.type property.
Example return value:
`jsCode blocks do not nest.
parseChatMarkup(
'@You This _is a ~bunch~ of test markup :sparkles:_. ' +
' :not_an_emoji:',`
{
mentions: ['You'],
emojiNames: ['sparkles']
}
);
// →
[ { type: 'mention', mention: 'You' },
'This ',
{ type: 'italic', content: [
'is a ',
{ type: 'strike', content: ['bunch'] },
' of ',
{ type: 'bold', content: ['test markup'] },
' ',
{ type: 'emoji', name: 'sparkles' } ] },
' ',
{ type: 'code', content: ['Code blocks do not nest.'] },
' :not_an_emoji:' ]
Quick list of token types:
| Type | Properties |
|------|------------|
| bold | .content - token array |.content
| italic | - token array |.content
| strike | - token array |.content
| code | - token array |.name
| emoji | - emoji name |.mention
| mention | - mentioned name, lowercase |.text
| link | - displayed text, .href` - link URL |
[MIT][license]
[license]: ./LICENSE