I often find it helpful to dump a handlebars scope out to the console. This
snippet has been quite useful.
Be careful that this doesn’t make it to production - for instance it would be
good to have a linter check for these statements in your html templates.
define ([
"use!underscore" ,
"use!handlebars" ,
"moment"
],
function (
_ , Handlebars , Moment
) {
// usage: {{toLowerCase someString}}
Handlebars . registerHelper ( 'toLowerCase' , function ( value ) {
return ( value && _ . isString ( value )) ? value . toLowerCase () : '' ;
});
// usage: {{debug}} or {{debug someValue}}
Handlebars . registerHelper ( "debug" , function ( optionalValue , options ) {
console . group ( "Handlebar Debug:" );
console . log ( this );
if ( _ . isObject ( optionalValue ) && _ . isObject ( optionalValue . hash )) {
// this means that the was called without params
}
else {
console . log ( optionalValue );
}
console . groupEnd ();
});
// usage: {{pluralize collection.length 'quiz' 'quizzes'}}
Handlebars . registerHelper ( 'pluralize' , function ( number , single , plural ) {
return ( number === 1 ) ? single : plural ;
});
// usage: {{fromNow date}}
Handlebars . registerHelper ( 'fromNow' , function ( date ) {
moment = new Moment ( date );
return moment . fromNow ();
});
});
/* End of file handlebars.helpers.js */