mdast-normalize-headings
mdast utility to make sure that there is only one top-level heading in the document by adjusting headings depths accordingly.
Providing multiple top-level headings per single markdown document is confusing for tools that assume that there is only a single top-level heading that contains some meta-information (usually title) about the document.
Install
npm:
npm install mdast-normalize-headings
Use
var u = require('unist-builder')
var normalizeHeadings = require('mdast-normalize-headings')
var tree = u('root', [
u('heading', {depth: 1}, [u('text', 'title')]),
u('heading', {depth: 2}, [u('text', 'description')]),
u('heading', {depth: 1}, [u('text', 'example')])
])
console.log(tree)
normalizeHeadings(tree)
console.log(tree)
Yields:
{ type: 'root',
children:
[ { type: 'heading', depth: 1, children: [Array] },
{ type: 'heading', depth: 2, children: [Array] },
{ type: 'heading', depth: 1, children: [Array] } ] }
{ type: 'root',
children:
[ { type: 'heading', depth: 1, children: [Array] },
{ type: 'heading', depth: 3, children: [Array] },
{ type: 'heading', depth: 2, children: [Array] } ] }
API
normalizeHeadings(tree)
Modifies tree in-place. Returns tree
.
Security
Use of mdast-normalize-headings
does not involve hast so there are no openings for cross-site scripting (XSS) attacks.
Related
remark-normalize-headings
— remark plugin wrappermdast-util-heading-range
— use headings as ranges
Contribute
See 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.
License
MIT © Eugene Sharygin