Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork24
mdast utility to parse markdown
License
syntax-tree/mdast-util-from-markdown
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
mdast utility that turns markdown into a syntax tree.
- What is this?
- When should I use this?
- Install
- Use
- API
- List of extensions
- Syntax
- Syntax tree
- Types
- Compatibility
- Security
- Related
- Contribute
- License
This package is a utility that takes markdown input and turns it into anmdast syntax tree.
This utility usesmicromark,which turns markdown into tokens,and then turns those tokens into nodes.This package is used insideremark-parse,which focusses onmaking it easier to transform content by abstracting these internals away.
If you want to handle syntax trees manually, use this.When youjust want to turn markdown into HTML,usemicromark instead.For an easier time processing content,use theremark ecosystem instead.
You can combine this package with other packages to add syntax extensions tomarkdown.Notable examples that deeply integrate with this package aremdast-util-mdx,mdast-util-gfm,mdast-util-frontmatter,mdast-util-math, andmdast-util-directive.
This package isESM only.In Node.js (version 16+), install withnpm:
npm install mdast-util-from-markdown
In Deno withesm.sh:
import{fromMarkdown}from'https://esm.sh/mdast-util-from-markdown@2'
In browsers withesm.sh:
<scripttype="module">import{fromMarkdown}from'https://esm.sh/mdast-util-from-markdown@2?bundle'</script>
Say we have the following markdown fileexample.md:
##Hello,*World*!…and our moduleexample.js looks as follows:
importfsfrom'node:fs/promises'import{fromMarkdown}from'mdast-util-from-markdown'constdoc=awaitfs.readFile('example.md')consttree=fromMarkdown(doc)console.log(tree)
…now runningnode example.js yields (positional info removed for brevity):
{type:'root',children:[{type:'heading',depth:2,children:[{type:'text',value:'Hello, '},{type:'emphasis',children:[{type:'text',value:'World'}]},{type:'text',value:'!'}]}]}
This package exports the identifierfromMarkdown.There is no default export.
The export map supports thedevelopment condition.Runnode --conditions development example.js to get instrumented dev code.Without this condition, production code is loaded.
Turn markdown into a syntax tree.
(value: Value, encoding: Encoding, options?: Options) => Root(value: Value, options?: Options) => Root
value(Value)— markdown to parseencoding(Encoding, default:'utf8')—character encoding for whenvalueisUint8Arrayoptions(Options, optional)— configuration
mdast tree (Root).
mdast compiler context (TypeScript type).
stack(Array<Node>)— stack of nodestokenStack(Array<[Token, OnEnterError | undefined]>)— stack of tokensdata(CompileData)— info passed around; key/value storebuffer(() => undefined)— capture some of the output dataresume(() => string)— stop capturing and access the output dataenter((node: Node, token: Token, onError?: OnEnterError) => undefined)— enter a nodeexit((token: Token, onError?: OnExitError) => undefined)— exit a nodesliceSerialize((token: Token, expandTabs?: boolean) => string)— get the string value of a tokenconfig(Required<Extension>)— configuration
Interface of tracked data (TypeScript type).
interfaceCompileData{/* see code */}
When working on extensions that use more data, extend the correspondinginterface to register their types:
declare module'mdast-util-from-markdown'{interfaceCompileData{// Register a new field.mathFlowInside?:boolean|undefined}}
Encodings supported by theUint8Array class(TypeScript type).
Seemicromark for more info.
typeEncoding='utf8'|/* … */
Change how markdown tokens from micromark are turned into mdast (TypeScripttype).
canContainEols(Array<string>, optional)— token types where line endings are usedenter(Record<string, Handle>, optional)— opening handlesexit(Record<string, Handle>, optional)— closing handlestransforms(Array<Transform>, optional)— tree transforms
Handle a token (TypeScript type).
this(CompileContext)— contexttoken(Token)— current token
Nothing (undefined).
Handle the case where theright token is open, but it is closed (by theleft token) or because we reached the end of the document (TypeScript type).
this(CompileContext)— contextleft(Tokenorundefined)— left tokenright(Token)— right token
Nothing (undefined).
Handle the case where theright token is open but it is closed byexiting theleft token (TypeScript type).
this(CompileContext)— contextleft(Token)— left tokenright(Token)— right token
Nothing (undefined).
Configuration (TypeScript type).
extensions(Array<MicromarkExtension>, optional)— micromark extensions to change how markdown is parsedmdastExtensions(Array<Extension | Array<Extension>>,optional)— extensions for this utility to change how tokens are turned into a tree
Token from micromark (TypeScript type).
typeToken={/* … */}
Extra transform, to change the AST afterwards (TypeScript type).
tree(Root)— tree to transform
New tree (Root) or nothing(in which case the current tree is used).
Contents of the file (TypeScript type).
Seemicromark for more info.
typeValue=Uint8Array|string
syntax-tree/mdast-util-directive— directivessyntax-tree/mdast-util-frontmatter— frontmatter (YAML, TOML, more)syntax-tree/mdast-util-gfm— GFMsyntax-tree/mdast-util-gfm-autolink-literal— GFM autolink literalssyntax-tree/mdast-util-gfm-footnote— GFM footnotessyntax-tree/mdast-util-gfm-strikethrough— GFM strikethroughsyntax-tree/mdast-util-gfm-table— GFM tablessyntax-tree/mdast-util-gfm-task-list-item— GFM task list itemssyntax-tree/mdast-util-math— mathsyntax-tree/mdast-util-mdx— MDXsyntax-tree/mdast-util-mdx-expression— MDX expressionssyntax-tree/mdast-util-mdx-jsx— MDX JSXsyntax-tree/mdast-util-mdxjs-esm— MDX ESM
Markdown is parsed according to CommonMark.Extensions can add support for other syntax.If you’re interested in extending markdown,more information is available in micromark’sreadme.
The syntax tree ismdast.
This package is fully typed withTypeScript.It exports the additional typesCompileContext,CompileData,Encoding,Extension,Handle,OnEnterError,OnExitError,Options,Token,Transform, andValue.
Projects maintained by the unified collective are compatible with maintainedversions of Node.js.
When we cut a new major release, we drop support for unmaintained versions ofNode.This means we try to keep the current release line,mdast-util-from-markdown@^2, compatible with Node.js 16.
As markdown is sometimes used for HTML, and improper use of HTML can open you upto across-site scripting (XSS) attack, use ofmdast-util-from-markdowncan also be unsafe.When going to HTML, use this utility in combination withhast-util-sanitize to make the tree safe.
syntax-tree/mdast-util-to-markdown— serialize mdast as markdownmicromark/micromark— parse markdownremarkjs/remark— process markdown
Seecontributing.mdinsyntax-tree/.githubfor ways to get started.Seesupport.md for ways to get help.
This project has acode of conduct.By interacting with this repository, organization, or community you agree toabide by its terms.
About
mdast utility to parse markdown
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.