Manipulate sections in a markdown string. A 'section' is a block of content preceded by a valid markdown ATX heading.
npm install sections> Manipulate sections in a markdown string. A 'section' is a block of content preceded by a valid markdown ATX heading.
Install with npm:
``sh`
$ npm install --save sections
Install with yarn:
`sh`
$ yarn add sections
This is meant to be fast and opinionated, and only works with ATX headings.
`js`
var sections = require('sections');
var obj = sections.parse(str);
.parse
Parses sections in a string of markdown and returns an object with two properties:
* sections: an array of markdown "sections", delimited by ATX headings,result
* : the cumulative result of whatever is returned by the (optional) function that is passed as the second argument.
Returns an object that looks something like this
Params
* string {String}fn
* {Function}returns
* {Object}
Example
`js`
var fs = require('fs');
var readme = fs.readFileSync('readme.md', 'utf8');
var sections = require('sections');
console.log(sections.parse(readme));
.format
Format sections. By default, if no filter function
is passed, this filters out empty sections fixes
whitespace between sections.
Params
* str {String}: Markdown stringfn
* {Function}: optional filter functionreturns
* {String}
.sortBy
Sort the sections in a parsed sections object, by the
given prop and array of values.
Params
* obj {Object}: Object returned from .parseprop
* {String|Array}: Defaults to title. The property to sort by, or the array of values to sort by.values
* {Array}: Array of values to sort by.returns
* {Object}
.render
Renders the array of sections from .parse.
Params
* obj {Object}: Sections object returned from .parsevalues
* {Array}: (optional) To sort the array of sections by title, pass an array of values to sort by.returns
* {String}
Example
`js`
var fs = require('fs');
var readme = fs.readFileSync('readme.md', 'utf8');
var sections = require('sections');
var obj = sections.parse(readme);
var str = sections.render(obj);
console.log(str);
The parsed object that is returned looks something like this:
`js`
{ sections:
[ Section {
pos: 12,
count: 0,
string: '# sections \n',
heading: '# sections',
level: 1,
title: 'sections',
body: '' },
Section {
pos: 32,
count: 1,
string: '\n## Foo\nThis is foo\n',
heading: '## Foo',
level: 2,
title: 'Foo',
body: 'This is foo' },
Section {
pos: 52,
count: 2,
string: '\n## Bar\nThis is bar\n',
heading: '## Bar',
level: 2,
title: 'Bar',
body: 'This is bar' },
Section {
pos: 72,
count: 3,
string: '\n## Baz\nThis is baz\n',
heading: '## Baz',
level: 2,
title: 'Baz',
body: 'This is baz' } ],
result: '',
headings: [ 'sections', 'Foo', 'Bar', 'Baz' ] }
* gulp-format-md: Gulp plugin for beautifying markdown using pretty-remarkable. | homepage
* markdown-utils: Micro-utils for creating markdown snippets. | homepage
* remarkable: Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in… more | homepage
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
_(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)_
To generate the readme, run the following command:
`sh`
$ npm install -g verbose/verb#dev verb-generate-readme && verb
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
`sh``
$ npm install && npm test
Jon Schlinkert
* github/jonschlinkert
* twitter/jonschlinkert
Copyright © 2017, Jon Schlinkert.
Released under the MIT License.
*
_This file was generated by verb-generate-readme, v0.6.0, on April 27, 2017._