blogware
Version:
A static site generator for hosting full-featured Ghost blog on GitHub Pages.
52 lines (38 loc) • 1.2 kB
JavaScript
var _ = require('lodash');
var path = require('path');
var renderFile = require('./util').renderFile;
var preparePaginator = require('./util').preparePaginator;
var getSlug = require('./util').getSlug;
function render(location, file, opts) {
updateOptions(location, file, opts);
return new Promise(function(resolve, reject) {
renderFile(file, opts, function(err, rendered) {
if (err) return reject(err);
var clone = file.clone();
clone.path = path.resolve(clone.base, location);
clone.contents = new Buffer(rendered);
resolve(clone);
});
});
}
function updateOptions(location, file, opts) {
var tags = opts.data.tags;
// @tag
var slug = getSlug('tag', location);
var tag = _.find(tags, { slug: slug });
opts.data.tag = tag;
// @posts with @tag
var posts = _.filter(opts.data.posts, function(post) {
return _.include(_.map(post.tags, function(tag) {
return tag.slug;
}), tag.slug)
});
opts.data.posts = posts;
// @paginator & @paged
opts.data.paginator = preparePaginator(location, file, opts);
if (opts.data.paginator.page > 1) {
opts.data.paged = true;
}
return opts;
}
module.exports = render;