Skip to content

Commit

Permalink
fix for overwriting partials
Browse files Browse the repository at this point in the history
  • Loading branch information
Marek Nogiec committed May 11, 2018
1 parent 11efc65 commit 7f5990b
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions lib/consolidate.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,13 @@ function read(path, options, cb) {

function readPartials(path, options, cb) {
if (!options.partials) return cb();
var partials = options.partials;
var keys = Object.keys(partials);
var keys = Object.keys(options.partials);
var partials = {};

function next(index) {
if (index === keys.length) return cb(null);
if (index === keys.length) return cb(null, partials);
var key = keys[index];
var partialPath = partials[key];
var partialPath = options.partials[key];

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

read(file, options, function(err, str) {
if (err) return cb(err);
options.partials[key] = str;
partials[key] = str;
next(++index);
});
}
Expand Down Expand Up @@ -171,14 +171,17 @@ function fromStringRenderer(name) {
options.filename = path;

return promisify(cb, function(cb) {
readPartials(path, options, function(err) {
readPartials(path, options, function(err, partials) {
var extend = (requires.extend || (requires.extend = require('util')._extend));
var optionsCopy = extend({}, options);
optionsCopy.partials = partials;
if (err) return cb(err);
if (cache(options)) {
exports[name].render('', options, cb);
if (cache(optionsCopy)) {
exports[name].render('', optionsCopy, cb);
} else {
read(path, options, function(err, str) {
read(path, optionsCopy, function(err, str) {
if (err) return cb(err);
exports[name].render(str, options, cb);
exports[name].render(str, optionsCopy, cb);
});
}
});
Expand Down Expand Up @@ -893,12 +896,16 @@ exports.underscore = fromStringRenderer('underscore');
exports.underscore.render = function(str, options, cb) {
return promisify(cb, function(cb) {
var engine = requires.underscore || (requires.underscore = require('underscore'));
var extend = (requires.extend || (requires.extend = require('util')._extend));
try {
const partials = {};
for (var partial in options.partials) {
options.partials[partial] = engine.template(options.partials[partial]);
partials[partial] = engine.template(options.partials[partial]);
}
var tmpl = cache(options) || cache(options, engine.template(str, null, options));
cb(null, tmpl(options).replace(/\n$/, ''));
const optionsCopy = extend({}, options);
optionsCopy.partials = partials;
var tmpl = cache(optionsCopy) || cache(optionsCopy, engine.template(str, null, optionsCopy));
cb(null, tmpl(optionsCopy).replace(/\n$/, ''));
} catch (err) {
cb(err);
}
Expand Down

0 comments on commit 7f5990b

Please sign in to comment.