UNPKG

@radicle/gray-matter

Version:

Parse front-matter from a string or file. Fast, reliable and easy to use. Parses YAML front matter by default, but also has support for YAML, JSON, TOML or Coffee Front-Matter, with options to set custom delimiters. Used by metalsmith, assemble, verb and

44 lines (36 loc) 1.15 kB
'use strict'; const typeOf = require('kind-of'); const stringify = require('./stringify'); const utils = require('./utils'); /** * Normalize the given value to ensure an object is returned * with the expected properties. */ module.exports = function(file) { if (typeOf(file) !== 'object') { file = { content: file }; } if (typeOf(file.data) !== 'object') { file.data = {}; } // if file was passed as an object, ensure that // "file.content" is set if (file.contents && file.content == null) { file.content = file.contents; } // set non-enumerable properties on the file object utils.define(file, 'orig', utils.toBuffer(file.content)); utils.define(file, 'language', file.language || ''); utils.define(file, 'matter', file.matter || ''); utils.define(file, 'stringify', function(data, options) { if (options && options.language) { file.language = options.language; } return stringify(file, data, options); }); // strip BOM and ensure that "file.content" is a string file.content = utils.toString(file.content); file.isEmpty = false; file.excerpt = ''; return file; };