unified

Project: mrzmmr/remark-behead

Package: remark-behead@3.1.0

  1. Increase or decrease heading depth
  1. remark 213
  2. plugin 136
  3. mdast 87
  4. remark-plugin 81

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:

Specify the scope by providing one of the following options:

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