Handlebars.registerHelper( "slice", function(items, block) { var limit = block.hash.limit; var rows = []; items.forEach(function(i) { rows.push(block.fn(i)); }); var html = ""; var hidden = rows .slice(0, Math.max(0, rows.length - limit)) .join(""); if (hidden != "") { html = ""; } html += rows.slice(-limit).join(""); return html; } ); function escape(text) { var e = { "<": "<", ">": ">" }; return text.replace(/[<>]/g, function (c) { return e[c]; }); } Handlebars.registerHelper( "uri", function(text) { text = escape(text); return URI.withinString(text, function(url) { return "" + url + ""; }); } );