igo
Version:
Igo is a Node.js Web Framework based on Express
68 lines (50 loc) • 1.33 kB
JavaScript
const moment = require('moment');
const i18next = require('i18next');
const IgoDust = require('igo-dust');
//
module.exports.init = (app) => {
app.engine('dust', IgoDust.engine);
app.set('view engine', 'dust');
app.set('views', './views');
// configure
IgoDust.configure(app);
initHelpers();
}
//
module.exports.middleware = (req, res, next) => {
res.locals.t = (params) => req.t(params.key, params);
next();
};
//
module.exports.render = (template, data, callback) => {
data.t = (params) => {
params.lng = data.lang;
return i18next.t(params.key, params);
};
IgoDust.engine(template, data, callback);
};
const initHelpers = () => {
// date formatting
IgoDust.helpers.dateformat = (params, locals) => {
if (!params.date) {
return null;
}
// do not format strings
if (typeof params.date === 'string') {
return params.date;
}
const m = moment(params.date);
m.locale(params.lang || locals.lang);
if (m && m.isValid()) {
if (params.format === 'calendar') {
return m.calendar();
} else {
return m.format(params.format || 'YYYY-MM-DD HH:mm:ss');
}
}
return null;
};
// load custom helpers
const helpers = require(process.cwd() + '/app/helpers');
helpers.init(IgoDust);
}