@yozora/parser-gfm
v2.4.0
Published
A markdown parser with built-in tokenizers to fully support GFM (without GFM extensions)
Maintainers
Readme
A Markdown parser for GFM core syntax, excluding GFM extensions.
See @yozora/parser-gfm documentation for details.
Install
npm install --save @yozora/parser-gfmUsage
Basic
import GfmParser from '@yozora/parser-gfm'
const parser = new GfmParser()
parser.parse('source Markdown content')
parser.parse('source Markdown content', {
shouldReservePosition: true,
})
// Iterable source chunks are concatenated during parsing.
parser.parse(['source ', 'chunks'])Generator input
import GfmParser from '@yozora/parser-gfm'
const parser = new GfmParser()
function* source() {
yield 'hello '
yield 'world'
}
parser.parse(source())Constructor options
| Name | Type | Required | Default | Description |
| :------------------------ | :------------------------- | :------- | :------------------- | :--------------------------------------- |
| blockFallbackTokenizer | IBlockFallbackTokenizer | No | ParagraphTokenizer | Fallback for unmatched block content |
| inlineFallbackTokenizer | IInlineFallbackTokenizer | No | TextTokenizer | Fallback for unmatched inline content |
| defaultParseOptions | IParseOptions | No | See below | Default options for every parse() call |
IParseOptions
| Name | Type | Required | Default | Description |
| :-------------------------- | :------------------------ | :------- | :---------------------- | :--------------------------------------------- |
| shouldReservePosition | boolean | No | false | Include source positions in generated nodes |
| presetDefinitions | Association[] | No | [] | Preset link-reference identifiers |
| presetFootnoteDefinitions | Association[] | No | [] | Preset footnote-reference identifiers |
| formatUrl | (url: string) => string | No | encodeLinkDestination | Format URLs stored in generated resource nodes |
Overview
Built-in tokenizers
| Tokenizer | Description | | :------------------------------------ | :-------------------------------------------------------------------------------------------------- | | @yozora/tokenizer-autolink | Resolve GFM Autolinks | | @yozora/tokenizer-blockquote | Resolve GFM blockquotes | | @yozora/tokenizer-break | Resolve GFM hard line breaks and GFM soft line breaks | | @yozora/tokenizer-definition | Resolve GFM link reference definitions | | @yozora/tokenizer-emphasis | Resolve GFM emphasis and strong emphasis | | @yozora/tokenizer-fenced-code | Resolve GFM fenced code blocks | | @yozora/tokenizer-heading | Resolve GFM ATX headings | | @yozora/tokenizer-html-block | Resolve GFM HTML blocks | | @yozora/tokenizer-html-inline | Resolve GFM raw HTML | | @yozora/tokenizer-image | Resolve GFM images | | @yozora/tokenizer-image-reference | Resolve GFM reference images | | @yozora/tokenizer-indented-code | Resolve GFM indented code blocks | | @yozora/tokenizer-inline-code | Resolve GFM code spans | | @yozora/tokenizer-link | Resolve GFM links | | @yozora/tokenizer-link-reference | Resolve GFM reference links | | @yozora/tokenizer-list | Resolve GFM lists (with GFM list items) | | @yozora/tokenizer-paragraph | Resolve GFM paragraphs | | @yozora/tokenizer-setext-heading | Resolve GFM setext headings | | @yozora/tokenizer-text | Resolve GFM textual contents | | @yozora/tokenizer-thematic-break | Resolve GFM thematic breaks |
