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

55 lines (45 loc) 1.01 kB
'use strict'; const yaml = require('js-yaml'); /** * Default engines */ const engines = exports = module.exports; /** * YAML */ engines.yaml = { parse: yaml.load.bind(yaml), stringify: yaml.dump.bind(yaml) }; /** * JSON */ engines.json = { parse: JSON.parse.bind(JSON), stringify: function(obj, options) { const opts = Object.assign({replacer: null, space: 2}, options); return JSON.stringify(obj, opts.replacer, opts.space); } }; /** * JavaScript */ engines.javascript = { parse: function parse(str, options, wrap) { /* eslint no-eval: 0 */ try { if (wrap !== false) { str = '(function() {\nreturn ' + str.trim() + ';\n}());'; } return eval(str) || {}; } catch (err) { if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) { return parse(str, options, false); } throw new SyntaxError(err); } }, stringify: function() { throw new Error('stringifying JavaScript is not supported'); } };