ma

markdown-ast

Tiny markdown parser

Showing:

Popularity

Downloads/wk

197

GitHub Stars

16

Maintenance

Last Commit

3yrs ago

Contributors

0

Package

Dependencies

0

Size (min+gzip)

1.4KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

markdown-ast

npm Build status Coverage status Bundle size Install size Code style: Prettier Donate

Fork of snarkdown that returns an array of AST nodes, instead of an HTML string.

TypeScript support included!

import md from 'markdown-ast'

const ast = md(code)

The goal is to support Github-style markdown. Please file an issue if you run into any inconsistencies.

 

Notable behavior

  • Node locations are not tracked.
  • No HTML parsing. Embedded HTML is plain text.
  • Single \n chars are removed from the start/end of plain text.

 

Node types

Every node has a type property equal to one of these:

  • bold: __text__ or **text**
  • border: 3+ character sequence of [*-_] w/ optional spaces between
  • break: \n\n or \r\n\r\n or \s\s\n or \s\s\r\n
  • codeBlock: triple backticks or 4-spaces/tab indented
  • codeSpan: inline backticks
  • image: ![alt](url) or ![alt][key] or just ![altAsKey]
  • italic: _text_ or *text*
  • link: [text](url) or [text][key] or just [textAsKey]
  • linkDef: [key]: url
  • list: markdown w/ [-+*]|\d+[\.\)] prefix
  • quote: markdown w/ > prefix
  • strike: ~~text~~
  • text
  • title: markdown w/ #{1,6} prefix or underlined w/ 3+ =|- symbols

Available properties are defined here.

 

Block nodes

"Block nodes" have a block property containing any nested nodes. Blocks are auto-closed when their parent block is closed (unless the nested block is already closed, of course).

Some nodes (which may not be blocks) auto-close all open blocks. These include border, break, list, quote, and title nodes.

"Inline blocks" can be used anywhere in the document. These include bold, codeSpan, image, italic, link, and strike nodes.

"Recursive blocks" use their own parsing context to process any nested nodes. These include list, quote, and title nodes.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100