npm.io
2.4.1 • Published 6d ago

@yozora/tokenizer-admonition

Licence
MIT
Version
2.4.1
Deps
4
Size
52 kB
Vulns
0
Weekly
0
Stars
157

@yozora/tokenizer-admonition


@yozora/tokenizer-admonition produces Admonition nodes. See documentation for details.

Install

npm install --save @yozora/tokenizer-admonition

Usage

@yozora/tokenizer-admonition is built into @yozora/parser.

With DefaultParser

A tokenizer must be registered with an IParser before use.

import { DefaultParser } from '@yozora/core-parser'
import ParagraphTokenizer from '@yozora/tokenizer-paragraph'
import TextTokenizer from '@yozora/tokenizer-text'
import AdmonitionTokenizer from '@yozora/tokenizer-admonition'

const parser = new DefaultParser()
  .useFallbackTokenizer(new ParagraphTokenizer())
  .useFallbackTokenizer(new TextTokenizer())
  .useTokenizer(new AdmonitionTokenizer())

parser.parse(`
:::info This is an info admonition
Content

### Nested block content
:::
`)
With @yozora/parser
import YozoraParser from '@yozora/parser'

const parser = new YozoraParser()
parser.parse(`
:::info This is an info admonition
Content

### Nested block content
:::
`)
With @yozora/parser-gfm
import GfmParser from '@yozora/parser-gfm'
import AdmonitionTokenizer from '@yozora/tokenizer-admonition'

const parser = new GfmParser()
parser.useTokenizer(new AdmonitionTokenizer())
parser.parse(`
:::info This is an info admonition
Content

### Nested block content
:::
`)
With @yozora/parser-gfm-ex
import GfmExParser from '@yozora/parser-gfm-ex'
import AdmonitionTokenizer from '@yozora/tokenizer-admonition'

const parser = new GfmExParser()
parser.useTokenizer(new AdmonitionTokenizer())
parser.parse(`
:::info This is an info admonition
Content

### Nested block content
:::
`)
Options
Name Type Required Default
name string No "@yozora/tokenizer-admonition"
priority number No TokenizerPriority.FENCED_BLOCK
  • name: Unique tokenizer name. Generated tokens retain it so the parser can dispatch later phases to the same tokenizer.

  • priority: Processing priority. Tokenizers with higher values run first. During block matching, a higher-priority tokenizer can interrupt a lower-priority tokenizer.

Node Type
export interface Admonition extends Parent<'admonition'> {
  type: 'admonition'
  /**
  * Keyword of an admonition.
  */
  keyword: 'note' | 'important' | 'tip' | 'caution' | 'warning' | string
  /**
  * Admonition title.
  */
  title: Node[]
  /**
   * Admonition body.
   */
  children: Node[]
}
Output Example
  • positions omitted:

    {
      "type": "admonition",
      "keyword": "tip",
      "title": [
        {
          "type": "text",
          "value": "pro tip"
        }
      ],
      "children": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "value": "admonition is awesome!\n"
            }
          ]
        }
      ]
    }

Keywords