JSPM

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

Increase or decrease heading depth

Package Exports

  • remark-behead
  • remark-behead/index.js

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 (remark-behead) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

remark-behead

Build Status Coverage Status Standard Readme Compliant Dependency Status

Increase or decrease heading depth

remark-behead is a remark plugin to increase or decrease heading depths, where the depth is changed either relatively or by means of minimum.

Table of Contents

Install

npm install --save remark-behead

Usage

import behead from 'remark-behead';
import {remark} from 'remark';

remark()
    .use(behead, {depth: 1, after: 0})
    .process(['# foo', '# bar', '# baz'].join('\n'))
    .then((vfile) => vfile.toString())
    .then((markdown) => console.log(markdown))
    .catch((err) => console.error(err));
/*
 * # foo
 *
 * ## bar
 *
 * ## baz
 */

remark()
    .use(behead, {minDepth: 2})
    .process(['# foo', '## bar', '### baz'].join('\n'))
    .then((vfile) => vfile.toString())
    .then((markdown) => console.log(markdown))
    .catch((err) => console.error(err));
/*
 * ## foo
 *
 * ### bar
 *
 * #### baz
 */

Options

Specify the depth change by providing one of the following options:

  • depth [ Number ]
  • minDepth [ 2 | 3 | 4 | 5 | 6 ]

Specify the scope by providing one of the following options:

  • after [ NodeSpecifier ]
  • before [ NodeSpecifier ]
  • between array [ [ NodeSpecifier ] , [ NodeSpecifier ] ]

NodeSpecifier [ string | Number | Object ] - When string, look for a heading with given value. When number, look for node at given index. When object, look for a node with given keys / values.

options.depth

Passing a negative value will decrease the heading depth by the given amount. Passing a positive value will increase the heading depth by the given amount.

options.minDepth

The heading depth will be increased accordingly to match the given minimal depth. If there are no headings with a smaller depth than the minimum depth, nothing is changed.

options.after

Manipulates heading nodes after but not including the given node specifier.

example

remark()
    .use(behead, {after: 'foo', depth: 1})
    .processSync('# foo\n# bar\n# baz');

/* # foo\n\n## bar\n\n## baz\n */

options.before

Manipulates heading nodes before but not including the given node specifier.

example

remark()
    .use(behead, {before: 'baz', depth: 1})
    .processSync('# foo\n\n# bar\n# baz\n');

/* ## foo\n\n## bar\n\n# baz\n */

options.between

Manipulates heading nodes between but not including the two given node specifiers, starting with options.between[0] and ending with options.between[1].

example

remark()
    .use(behead, {between: [0, 'baz'], depth: 1})
    .processSync('# foo\n# bar\n# baz');

/* # foo\n\n## bar\n\n# baz\n' */

Tests

npm install
npm test

Contribute

PRs accepted and greatly appreciated.

License

MIT © mrzmmr