nl_tokens: [ invokeHelper ] On stack before : hash inverse program params ... ... On stack after : result of helper invocation Pops off the helper s parameters invokes the helper and pushes the helper s return value onto the stack . If the helper is not found helperMissing is called .
pl_tokens: function ( paramSize , name , isRoot ) { this . context . aliases . helperMissing = 'helpers.helperMissing' ; this . useRegister ( 'helper' ) ; var helper = this . lastHelper = this . setupHelper ( paramSize , name , <mask> ) ; var nonHelper = this . nameLookup ( 'depth' + this . lastContext , name , 'context' ) ; var lookup = 'helper = ' + helper . name + ' || ' + nonHelper ; if ( helper . paramsInit ) { lookup += ',' + helper . paramsInit ; } this . push ( '(' + lookup + ',helper ' + '? helper.call(' + helper . callParams + ') ' + ': helperMissing.call(' + helper . helperMissingParams + '))' ) ; // Always flush subexpressions. This is both to prevent the compounding size issue that // occurs when the code has to be duplicated for inlining and also to prevent errors // due to the incorrect options object being passed due to the shared register. if ( ! isRoot ) { this . flushInline ( ) ; } }