Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

readme.md

yaml-fm

Build Status Coverage Status MIT License

About | Installation | API | Usage | License

About

yaml-fm is a Node.js module that converts a String with YAML frontmatter to an Object. It uses currying to be .map() friendly and converts non-YAML content to a trimmed Buffer. Use it to build your own personal static-site generator!

Turn this:

---
title: Hello world
slug: post/hello_world/index.html
tags:
  - excellent
  - adventure
---

Hello world!

Into this:

{
  title: 'Hello world',
  slug: 'post/hello_world/index.html',
  tags: ['excellent', 'adventure'],
  content: <Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64 21>
}

Installation

Install

$ npm install --save yaml-fm

Require

var fm = require('yaml-fm')

API

yaml-fm(delim)

delim: string: required delimiter before and after YAML frontmatter

Returns an anonymous function.

fn(string)

string: string: string to parse containing YAML frontmatter

Returns a flat JS object. Non-frontmatter is trimmed, converted to a Buffer, and included in Object.content.

Usage

Without .map()

// require module
var fm = require('yaml-fm')

// delimiter for YAML
var delim = '---'

// string containing YAML frontmatter
var stringWithFm = `
---
title: Hello world
slug: post/hello_world/index.html
tags:
  - excellent
  - adventure
---

Hello world!
`

// parse string
// NOTE: because fm is curried, it must be called twice
var fmObj = fm(delim)(stringWithFm)

/**
 fmObj:
  {
    title: 'Hello world',
    slug: 'post/hello_world/index.html',
    tags: ['excellent', 'adventure'],
    content: <Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64 21>
  }
 */

With .map()

See example.

// modules
var fm = require('../')
var fs = require('fs')
var globby = require('globby')
var bb = require('bluebird')

// promisify fs.readFile
var read = path => bb.promisify(fs.readFile)(path, 'utf8')

// glob -> paths -> strings -> objects
globby('content/*.md')
  .then(paths => bb.all(paths.map(read)))
  .then(strs => strs.map(fm('---')))
  .then(console.log)
  .catch(console.log)

/**
  NOTE:
  The fm transform could also look like this:

  .then(strs => strs.map(str => fm('---')(str)))

  Because yaml-fm uses currying, we can shorten that to the code seen above:

  .then(strs => strs.map(fm('---')))
 */

License

MIT

About

parse yaml frontmatter

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.