Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
mdast-util-frontmatter
Advanced tools
mdast extension to parse and serialize frontmatter (YAML, TOML, etc)
The `mdast-util-frontmatter` package is a utility for working with frontmatter in Markdown Abstract Syntax Trees (MDAST). It allows you to parse, transform, and stringify frontmatter in Markdown documents, making it easier to handle metadata in Markdown files.
Parse Frontmatter
This feature allows you to parse frontmatter from a Markdown string into an MDAST. The example demonstrates how to parse YAML frontmatter from a Markdown document.
const { fromMarkdown } = require('mdast-util-from-markdown');
const { frontmatter } = require('mdast-util-frontmatter');
const { frontmatterFromMarkdown } = require('mdast-util-frontmatter/from-markdown');
const md = '---\ntitle: Hello World\n---\n\n# Heading\n';
const tree = fromMarkdown(md, {
extensions: [frontmatter(['yaml'])],
mdastExtensions: [frontmatterFromMarkdown(['yaml'])]
});
console.log(tree);
Stringify Frontmatter
This feature allows you to stringify an MDAST with frontmatter back into a Markdown string. The example demonstrates how to convert an MDAST with YAML frontmatter into a Markdown document.
const { toMarkdown } = require('mdast-util-to-markdown');
const { frontmatter } = require('mdast-util-frontmatter');
const { frontmatterToMarkdown } = require('mdast-util-frontmatter/to-markdown');
const tree = {
type: 'root',
children: [
{
type: 'yaml',
value: 'title: Hello World'
},
{
type: 'heading',
depth: 1,
children: [{ type: 'text', value: 'Heading' }]
}
]
};
const md = toMarkdown(tree, {
extensions: [frontmatterToMarkdown(['yaml'])]
});
console.log(md);
Transform Frontmatter
This feature allows you to transform frontmatter within an MDAST. The example demonstrates how to visit and modify YAML frontmatter in a Markdown document.
const { visit } = require('unist-util-visit');
const { fromMarkdown } = require('mdast-util-from-markdown');
const { frontmatter } = require('mdast-util-frontmatter');
const { frontmatterFromMarkdown } = require('mdast-util-frontmatter/from-markdown');
const md = '---\ntitle: Hello World\n---\n\n# Heading\n';
const tree = fromMarkdown(md, {
extensions: [frontmatter(['yaml'])],
mdastExtensions: [frontmatterFromMarkdown(['yaml'])]
});
visit(tree, 'yaml', node => {
node.value = 'title: Updated Title';
});
console.log(tree);
The `gray-matter` package is a popular utility for parsing frontmatter from strings. It supports multiple frontmatter formats (YAML, JSON, TOML) and provides a simple API for extracting and manipulating frontmatter. Unlike `mdast-util-frontmatter`, it does not integrate directly with MDAST but is often used in conjunction with other Markdown processing tools.
The `remark-frontmatter` package is a plugin for the `remark` Markdown processor that adds support for frontmatter. It allows you to parse and stringify frontmatter in Markdown documents. While `remark-frontmatter` focuses on integrating frontmatter support into the `remark` ecosystem, `mdast-util-frontmatter` provides lower-level utilities for working directly with MDAST.
The `front-matter` package is a simple frontmatter parser that extracts metadata from strings. It supports YAML frontmatter and provides a straightforward API for parsing and manipulating frontmatter. Unlike `mdast-util-frontmatter`, it does not provide utilities for working with MDAST but is useful for basic frontmatter extraction and manipulation.
Extension for mdast-util-from-markdown
and/or
mdast-util-to-markdown
to support frontmatter in mdast.
When parsing (from-markdown
), must be combined with
micromark-extension-frontmatter
.
You probably shouldn’t use this package directly, but instead use
remark-frontmatter
with remark.
npm:
npm install mdast-util-frontmatter
Say we have the following file, example.md
:
+++
title = "New Website"
+++
# Other markdown
And our script, example.js
, looks as follows:
var fs = require('fs')
var fromMarkdown = require('mdast-util-from-markdown')
var toMarkdown = require('mdast-util-to-markdown')
var frontmatterSyntax = require('micromark-extension-frontmatter')
var frontmatter = require('mdast-util-frontmatter')
var doc = fs.readFileSync('example.md')
var tree = fromMarkdown(doc, {
extensions: [frontmatterSyntax(['yaml', 'toml'])],
mdastExtensions: [frontmatter.fromMarkdown(['yaml', 'toml'])]
})
console.log(tree)
var out = toMarkdown({extensions: [frontmatter.toMarkdown(['yaml', 'toml'])]})
console.log(out)
Now, running node example
yields:
{
type: 'root',
children: [
{type: 'toml', value: 'title = "New Website"'},
{
type: 'heading',
depth: 1,
children: [{type: 'text', value: 'Other markdown'}]
}
]
}
+++
title = "New Website"
+++
# Other markdown
frontmatter.fromMarkdown([options])
frontmatter.toMarkdown([options])
Note: the separate extensions are also available at
mdast-util-frontmatter/from-markdown
andmdast-util-frontmatter/to-markdown
.
Support frontmatter (YAML, TOML, and more).
These functions can be called with options and return extensions, respectively
for mdast-util-from-markdown
and
mdast-util-to-markdown
.
Options are the same as micromark-extension-frontmatter
.
remarkjs/remark
— markdown processor powered by pluginsremarkjs/remark-frontmatter
— remark plugin to support frontmattermicromark/micromark
— the smallest commonmark-compliant markdown parser that existsmicromark/micromark-extension-frontmatter
— micromark extension to parse frontmattersyntax-tree/mdast-util-from-markdown
— mdast parser using micromark
to create mdast from markdownsyntax-tree/mdast-util-to-markdown
— mdast serializer to create markdown from mdastSee contributing.md
in syntax-tree/.github
for ways to get
started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.
FAQs
mdast extension to parse and serialize frontmatter (YAML, TOML, etc)
The npm package mdast-util-frontmatter receives a total of 895,361 weekly downloads. As such, mdast-util-frontmatter popularity was classified as popular.
We found that mdast-util-frontmatter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.