diff --git a/core/frontend/helpers/index.js b/core/frontend/helpers/index.js index b484dcbec0..ae35c57443 100644 --- a/core/frontend/helpers/index.js +++ b/core/frontend/helpers/index.js @@ -13,12 +13,12 @@ coreHelpers = function (ghost) { * [ description] * @todo ghost core helpers + a way for themes to register them * @param {Object} context date object - * @param {*} block + * @param {*} options * @return {Object} A Moment time / date object */ - ghost.registerThemeHelper('dateFormat', function (context, block) { - var f = block.hash.format || "MMM Do, YYYY", - timeago = block.hash.timeago, + ghost.registerThemeHelper('dateFormat', function (context, options) { + var f = options.hash.format || "MMM Do, YYYY", + timeago = options.hash.timeago, date; if (timeago) { date = moment(context).fromNow(); @@ -28,6 +28,13 @@ coreHelpers = function (ghost) { return date; }); + // ### Content Helper + // Turns content html into a safestring so that the user doesn't have to escape it + ghost.registerThemeHelper('content', function (options) { + return new hbs.handlebars.SafeString(this.content); + }); + + /** * [ description] * diff --git a/core/test/ghost/frontend_helpers_index_spec.js b/core/test/ghost/frontend_helpers_index_spec.js index e7b486a376..5306f599ce 100644 --- a/core/test/ghost/frontend_helpers_index_spec.js +++ b/core/test/ghost/frontend_helpers_index_spec.js @@ -12,13 +12,33 @@ describe('Core Helpers', function () { var ghost; - beforeEach(function () { + beforeEach(function (done) { ghost = new Ghost(); + helpers.loadCoreHelpers(ghost).then(function () { + done(); + }, done); }); + describe('Content Helper', function () { + it('has loaded content helper', function () { + should.exist(handlebars.helpers.content); + }); + + it('can render content', function () { + var content = "Hello World", + rendered = handlebars.helpers.content.call({content: content}); + + should.exist(rendered); + rendered.string.should.equal(content); + }); + }); describe('Navigation Helper', function () { + it('has loaded nav helper', function () { + should.exist(handlebars.helpers.nav); + }); + it('can render nav items', function (done) { var templateSpy = sinon.spy(function (data) { return "rendered " + data.links.length; }), compileSpy = sinon.stub(ghost, 'compileTemplate').returns(when.resolve(templateSpy)), @@ -32,9 +52,6 @@ describe('Core Helpers', function () { rendered; helpers.loadCoreHelpers(ghost).then(function () { - - should.exist(handlebars.helpers.nav); - rendered = handlebars.helpers.nav.call({navItems: fakeNavItems}); // Returns a string returned from navTemplateFunc