marko/dust/index.js
2014-04-29 22:21:20 -06:00

39 lines
1.4 KiB
JavaScript

var raptorDust = require('raptor-dust');
exports.registerHelpers = function(dust) {
raptorDust.registerHelpers({
'async-fragment': {
buildInput: function(chunk, context, bodies, params, renderContext) {
var arg = params.arg = {};
for (var k in params) {
if (params.hasOwnProperty(k)) {
if (k.startsWith('arg-')) {
arg[k.substring(4)] = params[k];
delete params[k];
}
}
}
var dataProvider = params.dataProvider;
if (typeof dataProvider === 'string') {
var dataProviderFunc = context.get(dataProvider);
if (dataProviderFunc) {
params.dataProvider = dataProviderFunc;
}
}
params.invokeBody = function(asyncContext, data) {
var varName = params['var'];
var newContextObj = {};
newContextObj[varName] = data;
var newContext = context.push(newContextObj);
asyncContext.renderDustBody(bodies.block, newContext);
};
return params;
},
render: require('../taglibs/async/async-fragment-tag')
}
}, dust);
};