verb
Version:
Verb makes it easy to build project documentation using simple markdown templates, with zero configuration required.
58 lines (45 loc) • 1.48 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');
var includes = require('verb-readme-includes');
module.exports = function (verb) {
var verbOpts = verb.options || {};
var utils = verb.utils;
var page = {}, filepath;
exports.include = function (patterns, options) {
if (typeof patterns === 'undefined') {
throw new Error('{%= include() %} tag name is undefined.');
}
var opts = _.extend({
ext: '.md',
sep: '\n',
glob: {
filter: 'isFile',
matchBase: true
}
}, options, verbOpts);
var userIncludes = file.expand(opts.includes).map(utils.resolve);
var local = utils.matchName(userIncludes, patterns);
var npm = utils.matchName(includes, patterns);
// Parse front matter in the include
if (local && local.length > 0) {
filepath = String(local[0]);
page = matter.read(filepath);
} else if (npm && npm.length > 0) {
filepath = String(npm[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);
};
return exports;
};