Skip to content
This repository was archived by the owner on Dec 10, 2019. It is now read-only.

Commit 5c1172a

Browse files
committed
Shift template compilation to registerPartial()
1 parent d05a565 commit 5c1172a

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

lib/engine_underscore.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,20 @@ function addParentContext(data, currentContext) {
5252

5353
_.mixin({
5454
renderNamedPartial: function (partialKey, data, currentContext) {
55-
var partialString = partialRegistry[partialKey];
56-
if (typeof partialString !== 'string') { throw `Pattern ${partialKey} not found.`; }
55+
var compiledPartial = partialRegistry[partialKey];
56+
if (typeof compiledPartial !== 'function') { throw `Pattern ${partialKey} not found.`; }
5757

58-
return _.renderPartial(partialString, data, currentContext);
58+
return _.renderPartial(compiledPartial, data, currentContext);
5959
},
60-
renderPartial: function (partial, dataIn, currentContext) {
60+
renderPartial: function (compiledPartial, dataIn, currentContext) {
6161
var data = dataIn || {};
62-
var compiled;
62+
6363
if (dataIn && currentContext &&
6464
dataIn instanceof Object && currentContext instanceof Object) {
6565
data = addParentContext(data, currentContext);
6666
}
67-
compiled = _.template(partial);
6867

69-
return compiled(data);
68+
return compiledPartial(data);
7069
},
7170
/* eslint-disable no-eval, no-unused-vars */
7271
getPath: function (pathString, currentContext, debug) {
@@ -102,9 +101,9 @@ var engine_underscore = {
102101
var compiled;
103102

104103
try {
105-
compiled = _.template(pattern.extendedTemplate);
104+
compiled = partialRegistry[pattern.patternPartial];
106105
} catch (e) {
107-
console.log(`Error compiling underscore template ${pattern.patternName}:`, pattern.extendedTemplate, e);
106+
console.log(`Error looking up underscore template ${pattern.patternName}:`, pattern.extendedTemplate, e);
108107
}
109108

110109
// This try-catch is necessary because references to undefined variables
@@ -134,7 +133,15 @@ var engine_underscore = {
134133
},
135134

136135
registerPartial: function (pattern) {
137-
partialRegistry[pattern.patternPartial] = pattern.template;
136+
var compiled;
137+
138+
try {
139+
var templateString = pattern.extendedTemplate || pattern.template;
140+
compiled = _.template(templateString);
141+
} catch (e) {
142+
console.log(`Error compiling underscore template ${pattern.patternName}:`, pattern.extendedTemplate, e);
143+
}
144+
partialRegistry[pattern.patternPartial] = compiled;
138145
},
139146

140147
// find and return any {{> template-name }} within pattern

0 commit comments

Comments
 (0)