Markdown AST parser
npm install markdown-ast






Fork of snarkdown that returns an
array of AST nodes, instead of an HTML string.
TypeScript support included!
``ts
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.
- 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.
Every node has a type property equal to one of these:
- bold: __text__ or textborder
- : 3+ character sequence of [*-_] w/ optional spaces betweenbreak
- : \n\n or \r\n\r\n or \s\s\n or \s\s\r\ncodeBlock
- : triple backticks or 4-spaces/tab indentedcodeSpan
- : inline backticksimage
- : !alt or ![alt][key] or just ![altAsKey]italic
- : _text_ or textlink
- : text or [text][key] or just [textAsKey]linkDef
- : [key]: urllist
- : markdown w/ [-+*]|\d+[\.\)] prefixquote
- : markdown w/ > prefixstrike
- : ~~text~~text
- title
- : markdown w/ #{1,6} prefix or underlined w/ 3+ =|- symbols
Available properties are defined here.
"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.