A fast frontmatter parser. Supports both string and stream inputs.
Usage
Given a documentfoo.md
containing YAML frontmatter and content:```md
title: Hello, World!tags: foo, bar, baz
Lorem ipsum dolor sit amet consectetur adipisicing elit.…we can parse this document as a string, via [`fastmatter(string)`](#fastmatterstring):
```js
const fastmatter = require('fastmatter')
const fs = require('fs')
fs.readFile('foo.md', 'utf8', function (error, data) {
if (error) {
throw error
}
console.log(fastmatter(data))
/* =>
* {
* attributes: {
* title: 'Hello, World!',
* tags: [ 'foo', 'bar', 'baz' ]
* },
* body: 'Lorem ipsum dolor sit amet consectetur adipisicing elit.'
* }
*/
})
…or as a stream, via
fastmatter.stream([callback])
:const fastmatter = require('fastmatter')
const fs = require('fs')
const concat = require('concat-stream')
fs.createReadStream('foo.md').pipe(
fastmatter.stream(function (attributes) {
console.log(attributes)
/* =>
* {
* title: 'Hello, World!',
* tags: [ 'foo', 'bar', 'baz' ]
* }
*/
this.pipe(
concat(function (body) {
console.log(body.toString())
//=> Lorem ipsum dolor sit amet consectetur adipisicing elit.
})
)
})
)
callback
is called with the frontmatter attributes
, while the document body
is simply passed through the stream. Also note that the this
context of callback
is the stream itself; this is useful if we want to change the flow of the stream depending on the parsed attributes
.API
const fastmatter = require('fastmatter')
fastmatter(string)
Parses thestring
and returns the parsed frontmatter attributes
and document body
.fastmatter.stream(callback)
Callscallback
with the parsed frontmatter attributes
. The this
context of callback
is the stream itself. The document body
is passed through the stream.Installation
Install via yarn:$ yarn add fastmatter
Or npm:
$ npm install --save fastmatter