section-matter

Like front-matter, but supports multiple sections in a document.
Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your :heart: and support.
Install
Install with npm:
$ npm install --save section-matter
Usage
Params
input
{String|Buffer|Object}: If input is an object, it'scontent
property must be a string or buffer.- {Object}: options
returns
{Object}: Returns an object with acontent
string and an array ofsections
objects.
Example
var sections = require('{%= name %}');
var result = sections(input, options);
// { content: 'Content before sections', sections: [] }
See available options.
Example
With the exception of front-matter, which must be the very first thing in the string, the opening delimiter of all other sections must be followed by a string to be used as the key
for the section.
Given the following string:
Content before the sections.
---
More content.
---one
title: One
---
This is the first section.
The following code:
console.log(sections(input));
Results in:
{
content: 'Content before the sections.\n\n---\n\nMore content.\n',
sections: [
{
key: 'one',
data: 'title: One',
content: '\nThis is the first section.'
}
]
}
Options
options.section_parse
Type: function
Default: undefined
Function to be called on each section after it's parsed from the string.
Example
Given the following string (foo.md
):
This is content before the sections.
---one
title: First section
---
This is section one.
---two
title: Second section
---
This is section two.
Using the following custom section_parse
function:
var fs = require('fs');
var path = require('path');
var yaml = require('js-yaml');
var sections = require('section-matter');
var str = fs.readFileSync('foo.md');
var options = {
section_parse: function(section) {
console.log(section)
section.key = 'section-' + section.key;
section.data = yaml.safeLoad(section.data);
}
};
var result = sections(str, options);
console.log(result);
Results in:
{
content: 'This is content before the sections.\n',
sections: [
{
key: 'section-one',
data: { title: 'First section' },
content: '\nThis is section one.\n'
},
{
key: 'section-two',
data: { title: 'Second section' },
content: '\nThis is section two.\n'
}
]
}
options.section_delimiter
Type: string
Default: ---
Delimiter to use as the separator for sections. With the exception of front-matter, which must be the very first thing in the string, the opening delimiter of all other sections must be followed by a string to be used as the key
for the section.
Example
var input = '~~~\ntitle: bar\n~~~\n\nfoo\n~~~one\ntitle: One\n~~~\nThis is one';
console.log(sections(input, {section_delimiter: '~~~'}));
Results in:
{
content: '',
sections: [
{
key: '',
data: 'title: bar',
content: '\nfoo'
},
{
key: 'one',
data: 'title: One',
content: 'This is one'
}
]
}
About
sh
$ npm install && npm test
sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
Related projects
You might also be interested in these projects:
- assemble: Get the rocks out of your socks! Assemble makes you fast at creating web projects… more | homepage
- gray-matter: Parse front-matter from a string or file. Fast, reliable and easy to use. Parses YAML… more | homepage
- verb: Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… more | homepage
Contributors
Author
Jon Schlinkert
License
Copyright © 2017, Jon Schlinkert. Released under the MIT License.
This file was generated by verb-generate-readme, v0.6.0, on October 23, 2017.