Package Exports
- mdast-util-toc
- mdast-util-toc/lib/search
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mdast-util-toc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
mdast-util-toc
Generate a Table of Contents from mdast trees.
Installation
npm:
npm install mdast-util-toc
Usage
Dependencies:
var util = require('util')
var u = require('unist-builder')
var toc = require('mdast-util-toc')
Given a mdast tree:
var tree = u('root', [
u('heading', {depth: 1}, [u('text', 'Alpha')]),
u('heading', {depth: 2}, [u('text', 'Bravo')]),
u('heading', {depth: 3}, [u('text', 'Charlie')]),
u('heading', {depth: 2}, [u('text', 'Delta')])
])
Yields:
{
index: null,
endIndex: null,
map: {
type: 'list',
ordered: false,
spread: true,
children: [
{
type: 'listItem',
loose: true,
spread: true,
children: [Array]
}
]
}
}
API
toc(node[, options])
Generate a Table of Contents from a Markdown document.
Looks for the first heading matching options.heading
(case insensitive,
supports alt/title attributes for links and images too), and returns a table
of contents for all following headings.
If no heading
is specified, creates a table of contents for all headings in
node
.
Links to headings are based on GitHub’s style.
Only top-level headings (those not in blockquotes or lists), are used.
(Change this default behavior by using option parents
as described below)
The given node is not modified.
options
options.heading
Heading to look for (string
), wrapped in new RegExp('^(' + value + ')$', 'i')
.
options.maxDepth
Maximum heading depth to include in the table of contents (number
, default:
6
),
This is inclusive, thus, when set to 3
, level three headings, are included
(those with three hashes, ###
).
options.tight
Whether to compile list-items tightly (boolean?
, default: false
).
options.prefix
Add a prefix to links to headings (string?
, default: null
).
Useful for example when later going from mdast to hast and sanitizing with
hast-util-sanitize
.
options.parents
Allows headings to be children of certain node types.
Internally, it uses
unist-util-is to check.
Hence all types that can be passed in as first parameter can be used here,
including Function
, string
, Object
and Array.<Test>
.
Check
documentation
for details.
(default: the first parameter node
, which only allows top-level headings)
Example:
{
"parents": ["root", "blockquote"]
}
This would allow headings under either root
or blockquote
to be used.
Returns
An object representing the table of contents.
Properties
index
(number?
) — Position of theheading
innode
.-1
if no heading was found,null
if no heading was givenendIndex
(number?
) — Position of the last node afterheading
before the TOC starts.-1
if no heading was found,null
if no heading was given, same asindex
if there are no nodes betweenheading
and the first heading in the TOCmap
(Node?
) — List node representing the generated table of contents.null
if no table of contents could be created, either becauseheading
didn’t exist, or because no following headings were found
Contribute
See contributing.md
in syntax-tree/mdast
for ways to get
started.
This organisation has a Code of Conduct. By interacting with this repository, organisation, or community you agree to abide by its terms.