Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuanqing/fastmatter
:eyes: A fast frontmatter parser. Supports both string and stream inputs.
https://github.com/yuanqing/fastmatter
frontmatter markdown nodejs yaml
Last synced: 17 days ago
JSON representation
:eyes: A fast frontmatter parser. Supports both string and stream inputs.
- Host: GitHub
- URL: https://github.com/yuanqing/fastmatter
- Owner: yuanqing
- License: mit
- Created: 2014-08-18T09:18:57.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2021-01-30T07:40:01.000Z (about 4 years ago)
- Last Synced: 2025-01-17T23:40:22.920Z (22 days ago)
- Topics: frontmatter, markdown, nodejs, yaml
- Language: JavaScript
- Homepage:
- Size: 260 KB
- Stars: 28
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# fastmatter [![npm Version](http://img.shields.io/npm/v/fastmatter.svg?style=flat)](https://www.npmjs.org/package/fastmatter) [![Build Status](https://img.shields.io/travis/yuanqing/fastmatter.svg?branch=master&style=flat)](https://travis-ci.org/yuanqing/fastmatter) [![Coverage Status](https://img.shields.io/coveralls/yuanqing/fastmatter.svg?style=flat)](https://coveralls.io/github/yuanqing/fastmatter)
> A fast frontmatter parser. Supports both string and stream inputs.
## Usage
Given a document `foo.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])`](#fastmatterstreamcallback):
```js
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
```js
const fastmatter = require('fastmatter')
```### fastmatter(string)
Parses the `string` and returns the parsed frontmatter `attributes` and document `body`.
### fastmatter.stream([callback])
Calls `callback` 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](https://yarnpkg.com):
```sh
$ yarn add fastmatter
```Or [npm](https://npmjs.com):
```sh
$ npm install --save fastmatter
```## License
[MIT](LICENSE.md)