blogware
Version:
A static site generator for hosting full-featured Ghost blog on GitHub Pages.
74 lines (53 loc) • 1.44 kB
JavaScript
var path = require('path');
var moment = require('moment');
var table = require('../table');
function pass(file) {
if (!file) return null;
if (file.meta('event') !== 'unlink') {
table.route.add(file.relative, locate(file));
} else {
table.route.del(file.relative);
}
return file;
}
function locate(file) {
var relative = file.relative;
var collection = file.meta('collection');
if (collection) {
relative = relative.replace('_' + collection + '/', '');
}
if (collection === 'posts') {
relative = relative.replace(/^\d{4}-\d{2}-\d{2}-/, '');
var date = new Date(file.meta('matter').date)
if (date) {
try {
date = new Date(date).toISOString();
relative = moment(date).format('YYYY/MM/DD/') + relative;
} catch(err) {}
}
}
if (relative.indexOf('_') === 0) {
return;
}
var location = relative;
var engine = file.meta('engine');
if (engine) {
location = engine.rename(relative);
}
location = permalink(location);
return location ? [location] : null;
}
function permalink(location) {
var extname = path.extname(location);
var basename = path.basename(location, extname);
var dirname = path.dirname(location);
if (extname !== '.html') {
return location;
}
if (basename === 'index') {
return location;
}
location = path.join(dirname, basename, 'index.html');
return location;
}
module.exports = pass;