handlebars_helpers.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* handlebars helpers */
  2. // moment syntax example: moment(Date("2011-07-18T15:50:52")).format("MMMM YYYY")
  3. // usage: {{dateFormat creation_date format="MMMM YYYY"}}
  4. Handlebars.registerHelper('dateFormat', function(context, block) {
  5. if (window.moment) {
  6. var f = block.hash.format || "MMM DD, YYYY hh:mm:ss A";
  7. return moment(context).format(f); //had to remove Date(context)
  8. } else {
  9. return context; // moment plugin not available. return data as is.
  10. }
  11. });
  12. // extended "if" block helper
  13. // usage {{#ifCond var1 '==' var2}}
  14. Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
  15. switch (operator) {
  16. case '==':
  17. return (v1 == v2) ? options.fn(this) : options.inverse(this);
  18. case '===':
  19. return (v1 === v2) ? options.fn(this) : options.inverse(this);
  20. case '!==':
  21. return (v1 !== v2) ? options.fn(this) : options.inverse(this);
  22. case '<':
  23. return (v1 < v2) ? options.fn(this) : options.inverse(this);
  24. case '<=':
  25. return (v1 <= v2) ? options.fn(this) : options.inverse(this);
  26. case '>':
  27. return (v1 > v2) ? options.fn(this) : options.inverse(this);
  28. case '>=':
  29. return (v1 >= v2) ? options.fn(this) : options.inverse(this);
  30. case '&&':
  31. return (v1 && v2) ? options.fn(this) : options.inverse(this);
  32. case '||':
  33. return (v1 || v2) ? options.fn(this) : options.inverse(this);
  34. default:
  35. return options.inverse(this);
  36. }
  37. });
  38. /**
  39. * The {{#exists}} helper checks if a variable is defined.
  40. */
  41. Handlebars.registerHelper('exists', function(variable, options) {
  42. if (typeof variable !== 'undefined') {
  43. return options.fn(this);
  44. } else {
  45. return options.inverse(this);
  46. }
  47. });