Website/node_modules/metalsmith-date-in-filename/index.js

33 lines
1.1 KiB
JavaScript

var _ = require('lodash');
module.exports = function(options){
var override = (('boolean' === typeof options) && options) || ('object' === typeof options && options.override) || false;
return function drafts(files, metalsmith, done){
_.forEach(files, function (fileMeta, fileName) {
if (!override && fileMeta.date) {
return;
}
var m;
if (m = fileName.match(/(\d{4}-\d{2}-\d{2})/)) {
fileMeta.date = new Date(m[1]);
} else if (m = fileName.match(/(\d{8})/)) {
fileMeta.date = new Date(
m[1].substr(0, 4) +'-'+
m[1].substr(4, 2) +'-'+
m[1].substr(6, 2)
);
}
});
var filesWithoutContents = _.zipObject(_.map(files, function (fileMeta, fileName) {
var filteredFileMeta = _.reduce(fileMeta, function (acc, metaValue, metaName) {
if ('contents' !== metaName) {
acc[metaName] = metaValue;
}
return acc;
}, {});
return [fileName, filteredFileMeta];
}));
done();
};
};