Skip to content

Commit

Permalink
Merge pull request #310 from marek-nogiec/master
Browse files Browse the repository at this point in the history
fix for overwriting partials
  • Loading branch information
doowb committed May 14, 2018
2 parents 11efc65 + 118175b commit 887fe28
Showing 1 changed file with 16 additions and 11 deletions.
27 changes: 16 additions & 11 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 opts = extend({}, options);
opts.partials = partials;
if (err) return cb(err);
if (cache(options)) {
exports[name].render('', options, cb);
if (cache(opts)) {
exports[name].render('', opts, cb);
} else {
read(path, options, function(err, str) {
read(path, opts, function(err, str) {
if (err) return cb(err);
exports[name].render(str, options, cb);
exports[name].render(str, opts, cb);
});
}
});
Expand Down Expand Up @@ -894,9 +897,11 @@ exports.underscore.render = function(str, options, cb) {
return promisify(cb, function(cb) {
var engine = requires.underscore || (requires.underscore = require('underscore'));
try {
const partials = {};
for (var partial in options.partials) {
options.partials[partial] = engine.template(options.partials[partial]);
partials[partial] = engine.template(options.partials[partial]);
}
options.partials = partials;
var tmpl = cache(options) || cache(options, engine.template(str, null, options));
cb(null, tmpl(options).replace(/\n$/, ''));
} catch (err) {
Expand Down

0 comments on commit 887fe28

Please sign in to comment.