html-matter
Install
yarn add html-matter
Usage
By default you can use @frontmatter
at the beginning of the comment to indicate that its content is front-matter:
const htmlMatter = require('html-matter')
htmlMatter(`
<!-- @frontmatter title: Hello World -->
`)
//=> yields:
{ title: 'Hello World' }
// multi-line
htmlMatter(`
<!-- @frontmatter
title: Hello
tags:
- js
- es6
-->
`)
//=> yields:
{
title: 'hello',
tags: ['js', 'es6']
}
Use a custom namespace instead of frontmatter
:
htmlMatter(`
<!-- @config
port: 3000
-->
`, { namespace: 'config' })
//=> yields:
{ port: 3000 }
Use a custom parser instead of Yaml:
htmlMatter(`
<!-- @config {
"port": 3000
} -->
`, { namespace: 'config', parse: JSON.parse })
//=> yields:
{ port: 3000 }
If no front-matter was found, it returns null
.
API
htmlMatter(input, [options])
input
Type: string
Required: true
HTML string.
options
namespace
Type: string
Default: 'frontmatter'
parse
Type: function
The default value is differnt in node.js and browser environment:
- in node.js, it defaults to
require('js-yaml').safeLoad
, which means it's treated as YAML - in browser (CDN/bundler), it defaults to
val => val
, which means it simply returns the raw content, how to parse it is depending on you.
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
html-matter © egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).
egoistian.com · GitHub @egoist · Twitter @rem_rin_rin