From 0aba5f4b9b055490cb8b252104fd9880b01d014a Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 31 Oct 2016 12:53:19 +0100 Subject: [PATCH 1/2] Do not expose regexes in API --- lib/engine_handlebars.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/engine_handlebars.js b/lib/engine_handlebars.js index 43521f4..23c2f82 100644 --- a/lib/engine_handlebars.js +++ b/lib/engine_handlebars.js @@ -24,6 +24,10 @@ var Handlebars = require('handlebars'); +// regexes, stored here so they're only compiled once +const findPartialsRE = /{{#?>\s*([\w-\/.]+)(?:.|\s+)*?}}/g; +const findListItemsRE = /({{#( )?)(list(I|i)tems.)(one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty)( )?}}/g; + var engine_handlebars = { engine: Handlebars, engineName: 'handlebars', @@ -33,10 +37,6 @@ var engine_handlebars = { // style modifiers or pattern parameters (I think) expandPartials: false, - // regexes, stored here so they're only compiled once - findPartialsRE: /{{#?>\s*([\w-\/.]+)(?:.|\s+)*?}}/g, - findListItemsRE: /({{#( )?)(list(I|i)tems.)(one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty)( )?}}/g, - // render it renderPattern: function renderPattern(pattern, data, partials) { if (partials) { @@ -56,7 +56,7 @@ var engine_handlebars = { // find and return any {{> template-name }} within pattern findPartials: function findPartials(pattern) { - var matches = pattern.template.match(this.findPartialsRE); + var matches = pattern.template.match(findPartialsRE); return matches; }, findPartialsWithStyleModifiers: function () { @@ -73,14 +73,14 @@ var engine_handlebars = { return []; }, findListItems: function (pattern) { - var matches = pattern.template.match(this.findListItemsRE); + var matches = pattern.template.match(findListItemsRE); return matches; }, // given a pattern, and a partial string, tease out the "pattern key" and // return it. findPartial: function (partialString) { - var partial = partialString.replace(this.findPartialsRE, '$1'); + var partial = partialString.replace(findPartialsRE, '$1'); return partial; } }; From d00ee088f155cb804650381fa7e615690e47b624 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 31 Oct 2016 13:06:47 +0100 Subject: [PATCH 2/2] FIX: Correctly render template with {{> @partial-block }} https://github.com/geoffp/patternengine-node-handlebars/issues/3 --- lib/engine_handlebars.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/engine_handlebars.js b/lib/engine_handlebars.js index 23c2f82..d1a06ce 100644 --- a/lib/engine_handlebars.js +++ b/lib/engine_handlebars.js @@ -27,6 +27,12 @@ var Handlebars = require('handlebars'); // regexes, stored here so they're only compiled once const findPartialsRE = /{{#?>\s*([\w-\/.]+)(?:.|\s+)*?}}/g; const findListItemsRE = /({{#( )?)(list(I|i)tems.)(one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty)( )?}}/g; +const findAtPartialBlockRE = /{{#?>\s*@partial-block\s*}}/g; + +function escapeAtPartialBlock(partialString) { + var partial = partialString.replace(findAtPartialBlockRE, '{{> @partial-block }}') + return partial; +} var engine_handlebars = { engine: Handlebars, @@ -42,6 +48,7 @@ var engine_handlebars = { if (partials) { Handlebars.registerPartial(partials); } + pattern.extendedTemplate = escapeAtPartialBlock(pattern.extendedTemplate); var compiled = Handlebars.compile(pattern.extendedTemplate); return compiled(data); },