@@ -114,13 +114,13 @@ function read(path, options, cb) {
114
114
115
115
function readPartials ( path , options , cb ) {
116
116
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 = { } ;
119
119
120
120
function next ( index ) {
121
- if ( index === keys . length ) return cb ( null ) ;
121
+ if ( index === keys . length ) return cb ( null , partials ) ;
122
122
var key = keys [ index ] ;
123
- var partialPath = partials [ key ] ;
123
+ var partialPath = options . partials [ key ] ;
124
124
125
125
if ( partialPath === undefined || partialPath === null || partialPath === false ) {
126
126
return next ( ++ index ) ;
@@ -139,7 +139,7 @@ function readPartials(path, options, cb) {
139
139
140
140
read ( file , options , function ( err , str ) {
141
141
if ( err ) return cb ( err ) ;
142
- options . partials [ key ] = str ;
142
+ partials [ key ] = str ;
143
143
next ( ++ index ) ;
144
144
} ) ;
145
145
}
@@ -171,14 +171,17 @@ function fromStringRenderer(name) {
171
171
options . filename = path ;
172
172
173
173
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 ;
175
178
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 ) ;
178
181
} else {
179
- read ( path , options , function ( err , str ) {
182
+ read ( path , opts , function ( err , str ) {
180
183
if ( err ) return cb ( err ) ;
181
- exports [ name ] . render ( str , options , cb ) ;
184
+ exports [ name ] . render ( str , opts , cb ) ;
182
185
} ) ;
183
186
}
184
187
} ) ;
@@ -894,9 +897,11 @@ exports.underscore.render = function(str, options, cb) {
894
897
return promisify ( cb , function ( cb ) {
895
898
var engine = requires . underscore || ( requires . underscore = require ( 'underscore' ) ) ;
896
899
try {
900
+ const partials = { } ;
897
901
for ( var partial in options . partials ) {
898
- options . partials [ partial ] = engine . template ( options . partials [ partial ] ) ;
902
+ partials [ partial ] = engine . template ( options . partials [ partial ] ) ;
899
903
}
904
+ options . partials = partials ;
900
905
var tmpl = cache ( options ) || cache ( options , engine . template ( str , null , options ) ) ;
901
906
cb ( null , tmpl ( options ) . replace ( / \n $ / , '' ) ) ;
902
907
} catch ( err ) {
0 commit comments