verb
Version:
Verb makes it easy to build project documentation using simple markdown templates, with zero configuration required.
55 lines (43 loc) • 1.31 kB
JavaScript
/**
* Verb <https://github.com/assemble/verb>
* Generate markdown documentation for GitHub projects.
*
* Copyright (c) 2014 Jon Schlinkert, Brian Woodward, contributors.
* Licensed under the MIT license.
*/
;
var matter = require('gray-matter');
var file = require('fs-utils');
var _ = require('lodash');
module.exports = function (verb) {
var verbOpts = verb.options || {};
var utils = verb.utils;
var page = {}, filepath;
exports.docs = function (patterns, options) {
if (typeof patterns === 'undefined') {
throw new Error('{%= docs() %} tag name is undefined.');
}
var opts = _.extend({
ext: '.md',
docs: verb.docs,
sep: '\n',
glob: {
filter: 'isFile',
matchBase: true
}
}, options, verbOpts);
var userdocs = file.expand(opts.docs).map(utils.resolve);
var local = utils.matchName(userdocs, patterns);
// Parse front matter in the docs
if (local && local.length > 0) {
filepath = String(local[0]);
page = matter.read(filepath);
// Extend context with metadata from front matter.
var context = _.extend(_.cloneDeep(verb.context, opts), page.context);
return verb.template(page.content, context);
} else {
return;
}
};
return exports;
};