Skip to content

Commit 887fe28

Browse files
authored
Merge pull request #310 from marek-nogiec/master
fix for overwriting partials
2 parents 11efc65 + 118175b commit 887fe28

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

lib/consolidate.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,13 @@ function read(path, options, cb) {
114114

115115
function readPartials(path, options, cb) {
116116
if (!options.partials) return cb();
117-
var partials = options.partials;
118-
var keys = Object.keys(partials);
117+
var keys = Object.keys(options.partials);
118+
var partials = {};
119119

120120
function next(index) {
121-
if (index === keys.length) return cb(null);
121+
if (index === keys.length) return cb(null, partials);
122122
var key = keys[index];
123-
var partialPath = partials[key];
123+
var partialPath = options.partials[key];
124124

125125
if (partialPath === undefined || partialPath === null || partialPath === false) {
126126
return next(++index);
@@ -139,7 +139,7 @@ function readPartials(path, options, cb) {
139139

140140
read(file, options, function(err, str) {
141141
if (err) return cb(err);
142-
options.partials[key] = str;
142+
partials[key] = str;
143143
next(++index);
144144
});
145145
}
@@ -171,14 +171,17 @@ function fromStringRenderer(name) {
171171
options.filename = path;
172172

173173
return promisify(cb, function(cb) {
174-
readPartials(path, options, function(err) {
174+
readPartials(path, options, function(err, partials) {
175+
var extend = (requires.extend || (requires.extend = require('util')._extend));
176+
var opts = extend({}, options);
177+
opts.partials = partials;
175178
if (err) return cb(err);
176-
if (cache(options)) {
177-
exports[name].render('', options, cb);
179+
if (cache(opts)) {
180+
exports[name].render('', opts, cb);
178181
} else {
179-
read(path, options, function(err, str) {
182+
read(path, opts, function(err, str) {
180183
if (err) return cb(err);
181-
exports[name].render(str, options, cb);
184+
exports[name].render(str, opts, cb);
182185
});
183186
}
184187
});
@@ -894,9 +897,11 @@ exports.underscore.render = function(str, options, cb) {
894897
return promisify(cb, function(cb) {
895898
var engine = requires.underscore || (requires.underscore = require('underscore'));
896899
try {
900+
const partials = {};
897901
for (var partial in options.partials) {
898-
options.partials[partial] = engine.template(options.partials[partial]);
902+
partials[partial] = engine.template(options.partials[partial]);
899903
}
904+
options.partials = partials;
900905
var tmpl = cache(options) || cache(options, engine.template(str, null, options));
901906
cb(null, tmpl(options).replace(/\n$/, ''));
902907
} catch (err) {

0 commit comments

Comments
 (0)