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.
npm install --save remark-behead
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
*/
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.
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.
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.
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 */
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 */
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' */
npm install
npm test
PRs accepted and greatly appreciated.
MIT © mrzmmr