u-wave-parse-chat-markup
Abstract chat parser for üWave client applications.
Last updated a year ago by goto-bus-stop .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install u-wave-parse-chat-markup 
SYNC missed versions from official npm registry.

parse-chat-markup

Chat markup parser for üWave client applications.

Installation - Usage - Supported Markup - API - License

Build Status Coverage Status npm bundle size

Installation

npm install --save u-wave-parse-chat-markup

Usage

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' ] } ]

Supported markup

  • Bolded text using *asterisks*
  • Italics using _underscores_
  • Monospace using `backticks`
  • <strike>Strikethrough</strike> using ~tildes~
  • Emoji :smile: using :colons:
  • @-mentions using @at-signs

API

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.

Parsed text

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:

parseChatMarkup(
  '@You This _is a ~bunch~ of *test markup* :sparkles:_. ' +
  '`Code blocks *do not nest*.` :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
italic .content - token array
strike .content - token array
code .content - token array
emoji .name - emoji name
mention .mention - mentioned name, lowercase
link .text - displayed text, .href - link URL

License

MIT

Current Tags

  • 2.4.0                                ...           latest (a year ago)

11 Versions

  • 2.4.0                                ...           a year ago
  • 2.3.0                                ...           2 years ago
  • 2.2.1                                ...           3 years ago
  • 2.2.0                                ...           3 years ago
  • 2.1.0                                ...           3 years ago
  • 2.0.4                                ...           4 years ago
  • 2.0.3                                ...           4 years ago
  • 2.0.2                                ...           4 years ago
  • 2.0.1                                ...           4 years ago
  • 2.0.0                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
Maintainers (2)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (0)
None
Dev Dependencies (6)

Copyright 2014 - 2016 © taobao.org |