Created
June 18, 2014 16:25
-
-
Save highruned/fc647b3ad50f6824a56e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dust.helpers["tap"] = function(input, chunk, context) { | |
// return given input if there is no dust reference to resolve | |
// dust compiles a string/reference such as {foo} to a function | |
if (typeof input !== "function") { | |
return input; | |
} | |
var dustBodyOutput = '', | |
returnValue; | |
//use chunk render to evaluate output. For simple functions result will be returned from render call, | |
//for dust body functions result will be output via callback function | |
returnValue = chunk.tap(function(data) { | |
dustBodyOutput += data; | |
return ''; | |
}).render(input, context); | |
chunk.untap(); | |
//assume it's a simple function call if return result is not a chunk | |
if (returnValue.constructor !== chunk.constructor) { | |
//use returnValue as a result of tap | |
return returnValue; | |
} else if (dustBodyOutput === '') { | |
return false; | |
} else { | |
return dustBodyOutput; | |
} | |
}; | |
dust.helpers["if"] = function( chunk, context, bodies, params ){ | |
var body = bodies.block, | |
skip = bodies['else']; | |
if( params && params.cond){ | |
var cond = params.cond; | |
context.stack.tail.head.index = context.stack.index + 1; | |
context.stack.tail.head.of = context.stack.of; | |
cond = dust.helpers.tap(cond, chunk, context); | |
// eval expressions with given dust references | |
if(eval(cond)){ | |
if(body) { | |
return chunk.render( bodies.block, context ); | |
} | |
else { | |
_console.log( "Missing body block in the if helper!" ); | |
return chunk; | |
} | |
} | |
if(skip){ | |
return chunk.render( bodies['else'], context ); | |
} | |
} | |
// no condition | |
else { | |
_console.log( "No condition given in the if helper!" ); | |
} | |
return chunk; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment