Skip to content

Commit 9e096bf

Browse files
authored
Merge pull request #285 from davecapper/master
Provide support for absolute path partials
2 parents a624045 + d660db5 commit 9e096bf

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/consolidate.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ var join = path.join;
2222
var resolve = path.resolve;
2323
var extname = path.extname;
2424
var dirname = path.dirname;
25+
var isAbsolute = path.isAbsolute;
2526

2627
var readCache = {};
2728

@@ -118,7 +119,19 @@ function readPartials(path, options, fn) {
118119
function next(index) {
119120
if (index === keys.length) return fn(null);
120121
var key = keys[index];
121-
var file = join(dirname(path), partials[key] + extname(path));
122+
var partialPath = partials[key];
123+
124+
var file;
125+
if (isAbsolute(partialPath)) {
126+
if (extname(partialPath) !== '') {
127+
file = partialPath;
128+
} else {
129+
file = join(partialPath + extname(path));
130+
}
131+
} else {
132+
file = join(dirname(path), partialPath + extname(path));
133+
}
134+
122135
read(file, options, function(err, str){
123136
if (err) return fn(err);
124137
options.partials[key] = str;

test/shared/partials.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,24 @@ exports.test = function(name) {
2323
done();
2424
});
2525
});
26+
it('should support absolute path partial', function(done){
27+
var path = 'test/fixtures/' + name + '/partials.' + name;
28+
var locals = {user: user, partials: {partial: __dirname + '/../../test/fixtures/' + name + '/user' }};
29+
cons[name](path, locals, function(err, html){
30+
if (err) return done(err);
31+
html.should.equal('<p>Tobi</p>');
32+
done();
33+
});
34+
});
35+
it('should support relative path partial', function(done){
36+
var path = 'test/fixtures/' + name + '/partials.' + name;
37+
var locals = {user: user, partials: {partial: '../' + name + '/user' }};
38+
cons[name](path, locals, function(err, html){
39+
if (err) return done(err);
40+
html.should.equal('<p>Tobi</p>');
41+
done();
42+
});
43+
});
2644
}
2745
else {
2846
it('should support rendering a partial', function(done){

0 commit comments

Comments
 (0)