JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 342782
  • Score
    100M100P100Q189049F
  • License MIT

Generate a Table of Contents (TOC) from a given Markdown file

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

Build Coverage Downloads Chat Sponsors Backers

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 the heading in node. -1 if no heading was found, null if no heading was given
  • endIndex (number?) — Position of the last node after heading before the TOC starts. -1 if no heading was found, null if no heading was given, same as index if there are no nodes between heading and the first heading in the TOC
  • map (Node?) — List node representing the generated table of contents. null if no table of contents could be created, either because heading 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.

License

MIT © Jonathan Haines