3 var fs = require('fs');
4 var marked = require('marked');
6 var frontmatter = '---';
7 var keyValRe = /(\w+): (.*)/;
9 function parseYamlish(txt) {
11 var cfg = { title: '', tagline: '', description: '', examples: '' };
14 var lines = txt.trim().split('\n');
18 if (frontmatter !== lines.shift()) {
19 throw new Error('no frontmatter marker at beginning of file');
23 cfg[block] = marked(cfg[block]);
27 lines.some(function (line, i) {
28 if (frontmatter === line) {
36 throw new Error('missing newline after frontmatter');
46 throw new Error('invalid blank line in frontmatter');
51 if (!line || ' ' === line.slice(0, 2)) {
52 cfg[block] += line.slice(2) + '\n';
58 var m = line.match(keyValRe);
61 'invalid key format for: ' + JSON.stringify(line) + ' ' + i
72 cfg[block] = marked(cfg[block]);
74 cfg.examples = marked(lines.slice(last).join('\n'));
79 module.exports.parse = parseYamlish;
81 if (require.main === module) {
84 fs.readFileSync(__dirname + '/../node/README.md', 'utf8')