mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
39 lines
1.4 KiB
JavaScript
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);
|
|
}; |