Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

mdast utility to parse markdown

License

NotificationsYou must be signed in to change notification settings

syntax-tree/mdast-util-from-markdown

BuildCoverageDownloadsSize

mdast utility that turns markdown into a syntax tree.

Contents

What is this?

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.

When should I use this?

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.

Install

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>

Use

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:'!'}]}]}

API

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.

fromMarkdown(value[, encoding][, options])

Turn markdown into a syntax tree.

Overloads
  • (value: Value, encoding: Encoding, options?: Options) => Root
  • (value: Value, options?: Options) => Root
Parameters
Returns

mdast tree (Root).

CompileContext

mdast compiler context (TypeScript type).

Fields
  • stack (Array<Node>)— stack of nodes
  • tokenStack (Array<[Token, OnEnterError | undefined]>)— stack of tokens
  • data (CompileData)— info passed around; key/value store
  • buffer (() => undefined)— capture some of the output data
  • resume (() => string)— stop capturing and access the output data
  • enter ((node: Node, token: Token, onError?: OnEnterError) => undefined)— enter a node
  • exit ((token: Token, onError?: OnExitError) => undefined)— exit a node
  • sliceSerialize ((token: Token, expandTabs?: boolean) => string)— get the string value of a token
  • config (Required<Extension>)— configuration

CompileData

Interface of tracked data (TypeScript type).

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}}

Encoding

Encodings supported by theUint8Array class(TypeScript type).

Seemicromark for more info.

Type
typeEncoding='utf8'|/* … */

Extension

Change how markdown tokens from micromark are turned into mdast (TypeScripttype).

Properties

Handle

Handle a token (TypeScript type).

Parameters
Returns

Nothing (undefined).

OnEnterError

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).

Parameters
Returns

Nothing (undefined).

OnExitError

Handle the case where theright token is open but it is closed byexiting theleft token (TypeScript type).

Parameters
Returns

Nothing (undefined).

Options

Configuration (TypeScript type).

Properties

Token

Token from micromark (TypeScript type).

Type
typeToken={/* … */}

Transform

Extra transform, to change the AST afterwards (TypeScript type).

Parameters
  • tree (Root)— tree to transform
Returns

New tree (Root) or nothing(in which case the current tree is used).

Value

Contents of the file (TypeScript type).

Seemicromark for more info.

Type
typeValue=Uint8Array|string

List of extensions

Syntax

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.

Syntax tree

The syntax tree ismdast.

Types

This package is fully typed withTypeScript.It exports the additional typesCompileContext,CompileData,Encoding,Extension,Handle,OnEnterError,OnExitError,Options,Token,Transform, andValue.

Compatibility

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.

Security

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.

Related

Contribute

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.

License

MIT ©Titus Wormer


[8]ページ先頭

©2009-2025 Movatter.jp