-
-
Save roden0/cdee4daa828b2a40e717 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
| /*! ****************************** | |
| Handlebars helpers | |
| *******************************/ | |
| // debug helper | |
| // usage: {{debug}} or {{debug someValue}} | |
| // from: @commondream (http://thinkvitamin.com/code/handlebars-js-part-3-tips-and-tricks/) | |
| Handlebars.registerHelper("debug", function(optionalValue) { | |
| console.log("Current Context"); | |
| console.log("===================="); | |
| console.log(this); | |
| if (optionalValue) { | |
| console.log("Value"); | |
| console.log("===================="); | |
| console.log(optionalValue); | |
| } | |
| }); | |
| // return the first item of a list only | |
| // usage: {{#first items}}{{name}}{{/first}} | |
| Handlebars.registerHelper('first', function(context, block) { | |
| return block(context[0]); | |
| }); | |
| // a limited 'each' loop. | |
| // usage: {{#limit items offset="1" limit="5"}} : items 1 thru 6 | |
| // usage: {{#limit items limit="10"}} : items 0 thru 9 | |
| // usage: {{#limit items offset="3"}} : items 3 thru context.length | |
| // defaults are offset=0, limit=5 | |
| Handlebars.registerHelper('limit', function(context, block) { | |
| var ret = "", | |
| offset = parseInt(block.hash.offset) || 0, | |
| limit = parseInt(block.hash.limit) || 5, | |
| i = (offset < context.length) ? offset : 0, | |
| j = ((limit + offset) < context.length) ? (limit + offset) : context.length; | |
| for(i,j; i<j; i++) { | |
| ret += block(context[i]); | |
| } | |
| return ret; | |
| }); | |
| // return a comma-serperated list from an iterable object | |
| // usage: {{#toSentance tags}}{{name}}{{/toSentance}} | |
| Handlebars.registerHelper('toSentance', function(context, block) { | |
| var ret = ""; | |
| for(var i=0, j=context.length; i<j; i++) { | |
| ret = ret + block(context[i]); | |
| if (i<j-1) { | |
| ret = ret + ", "; | |
| }; | |
| } | |
| return ret; | |
| }); | |
| // format an ISO date using Moment.js | |
| // http://momentjs.com/ | |
| // moment syntax example: moment(Date("2011-07-18T15:50:52")).format("MMMM YYYY") | |
| // usage: {{dateFormat creation_date format="MMMM YYYY"}} | |
| Handlebars.registerHelper('dateFormat', function(context, block) { | |
| if (window.moment) { | |
| var f = block.hash.format || "MMM Mo, YYYY"; | |
| return moment(Date(context)).format(f); | |
| }else{ | |
| return context; // moment plugin not available. return data as is. | |
| }; | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment