biofriction-wp-theme/node_modules/front-matter/index.js

51 lines
1.1 KiB
JavaScript

var parser = require('js-yaml')
var optionalByteOrderMark = '\\ufeff?'
var pattern = '^(' +
optionalByteOrderMark +
'(= yaml =|---)' +
'$([\\s\\S]*?)' +
'^(?:\\2|\\.\\.\\.)' +
'$' +
(process.platform === 'win32' ? '\\r?' : '') +
'(?:\\n)?)'
// NOTE: If this pattern uses the 'g' flag the `regex` variable definition will
// need to be moved down into the functions that use it.
var regex = new RegExp(pattern, 'm')
module.exports = extractor
module.exports.test = test
function extractor (string) {
string = string || ''
var lines = string.split(/(\r?\n)/)
if (lines[0] && /= yaml =|---/.test(lines[0])) {
return parse(string)
} else {
return { attributes: {}, body: string }
}
}
function parse (string) {
var match = regex.exec(string)
if (!match) {
return {
attributes: {},
body: string
}
}
var yaml = match[match.length - 1].replace(/^\s+|\s+$/g, '')
var attributes = parser.load(yaml) || {}
var body = string.replace(match[0], '')
return { attributes: attributes, body: body, frontmatter: yaml }
}
function test (string) {
string = string || ''
return regex.test(string)
}