146 lines
3.6 KiB
JavaScript
146 lines
3.6 KiB
JavaScript
var metalsmith = require('metalsmith')
|
|
var layouts = require('metalsmith-layouts')
|
|
var markdown = require('metalsmith-markdown')
|
|
var collections = require('metalsmith-collections')
|
|
var pagination = require('metalsmith-pagination')
|
|
var paths = require('metalsmith-paths')
|
|
var filemetadata = require('metalsmith-filemetadata')
|
|
var matters = require('metalsmith-matters')
|
|
|
|
var fs = require('fs');
|
|
var moment = require('moment');
|
|
|
|
var handlebars = require('handlebars');
|
|
var hlayouts = require('handlebars-layouts');
|
|
|
|
handlebars.registerHelper(hlayouts(handlebars));
|
|
handlebars.registerPartial('base', fs.readFileSync('templates/base.hbs', 'utf8'));
|
|
|
|
handlebars.registerHelper('formatDate', function(date) {
|
|
return moment(new Date(date)).format('MMMM D, YYYY HH:mm:ss');
|
|
});
|
|
|
|
handlebars.registerHelper('formatTimestamp', function(date) {
|
|
return moment(date, 'X').format('MMMM D, YYYY HH:mm:ss');
|
|
});
|
|
|
|
function compareWith(v1, v2, operator) {
|
|
var itm = false;
|
|
|
|
switch (operator) {
|
|
case '==':
|
|
itm = (v1 == v2);
|
|
break;
|
|
case '!=':
|
|
itm = (v1 != v2);
|
|
break;
|
|
case '===':
|
|
itm = (v1 === v2);
|
|
break;
|
|
case '<':
|
|
itm = (v1 < v2);
|
|
break;
|
|
case '<=':
|
|
itm = (v1 <= v2);
|
|
break;
|
|
case '>':
|
|
itm = (v1 > v2);
|
|
break;
|
|
case '>=':
|
|
itm = (v1 >= v2);
|
|
break;
|
|
}
|
|
return itm;
|
|
}
|
|
|
|
handlebars.registerHelper('eachCond', function(context, member, operator, cond, options) {
|
|
var tot = '';
|
|
for (var i = 0; i < context.length; i++) {
|
|
var itm = false;
|
|
var v1 = context[i][member];
|
|
|
|
|
|
if (compareWith(v1, cond, operator)) {
|
|
tot += options.fn(context[i]);
|
|
}
|
|
}
|
|
return tot;
|
|
});
|
|
|
|
handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
|
|
if (compareWith(v1, v2, operator)) {
|
|
return options.fn(this);
|
|
} else {
|
|
return options.inverse(this);
|
|
}
|
|
});
|
|
|
|
metalsmith(__dirname)
|
|
.source('recettes')
|
|
.metadata(require('./config/metadata'))
|
|
.frontmatter(false)
|
|
.use(matters())
|
|
.use(filemetadata(require('./config/filemetadata')))
|
|
.use(collections(require('./config/collections')))
|
|
.use(markdown(require('./config/markdown')))
|
|
.use(pagination(require('./config/pagination')))
|
|
.use(paths(require('./config/paths')))
|
|
.use(layouts(require('./config/layouts')))
|
|
.use(copyVendor())
|
|
.destination('build')
|
|
.build(function (err) {
|
|
if (err) {
|
|
throw err
|
|
}
|
|
})
|
|
|
|
function debugCollection() {
|
|
return function(files, metalsmith, done) {
|
|
console.log(files);
|
|
for (var i in files) {
|
|
console.log(i + ' -> ' + ' (' + files[i].collection + ')');
|
|
console.log(files[i]);
|
|
}
|
|
return done();
|
|
}
|
|
}
|
|
|
|
function debugMeta(metaname) {
|
|
return function(files, metalsmith, done) {
|
|
if (metaname !== undefined) {
|
|
console.log(metalsmith.metadata()[metaname]);
|
|
} else {
|
|
console.log(metalsmith.metadata());
|
|
}
|
|
return done();
|
|
}
|
|
}
|
|
|
|
function debugPagination() {
|
|
return function(files, metalsmith, done) {
|
|
|
|
for (var i in files) {
|
|
var f = files[i];
|
|
if (f !== undefined && f.path != undefined) {
|
|
console.log(f.path);
|
|
}
|
|
}
|
|
|
|
return done();
|
|
}
|
|
}
|
|
|
|
|
|
function copyVendor() {
|
|
|
|
return function(files, metalsmith, done){
|
|
|
|
var bufferMoment = fs.readFileSync('styles/customHighlight.css');
|
|
files['styles/customHighlight.css'] = {
|
|
contents: bufferMoment
|
|
};
|
|
|
|
return done();
|
|
};
|
|
}
|
|
|