Skip to content

Commit c9a94a5

Browse files
authored
Merge pull request #278 from chiragpat/master
Passing in template name to dust compile.
2 parents 81a3ec6 + 03219a2 commit c9a94a5

File tree

4 files changed

+47
-1
lines changed

4 files changed

+47
-1
lines changed

lib/consolidate.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,12 @@ exports.dust.render = function(str, options, fn){
511511
};
512512

513513
try {
514-
var tmpl = cache(options) || cache(options, engine.compileFn(str));
514+
var templateName;
515+
if (options.filename) {
516+
templateName = options.filename.replace(new RegExp('^' + views + '/'), '').replace(new RegExp('\\.' + ext), '');
517+
}
518+
519+
var tmpl = cache(options) || cache(options, engine.compileFn(str, templateName));
515520
tmpl(options, fn);
516521
} catch (err) {
517522
fn(err);

test/consolidate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ require('./shared').test('hogan');
3030
require('./shared/partials').test('hogan');
3131
require('./shared').test('dust');
3232
require('./shared/partials').test('dust');
33+
require('./shared/dust').test('dust');
3334
require('./shared').test('handlebars');
3435
require('./shared/partials').test('handlebars');
3536
require('./shared/helpers').test('handlebars');
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<p>{user.name}</p>
2+
{@templateName/}

test/shared/dust.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*eslint-env node, mocha */
2+
var cons = require('../../');
3+
var fs = require('fs');
4+
5+
// var should = require('should');
6+
7+
exports.test = function(name) {
8+
var user = { name: 'Tobi' };
9+
10+
describe(name, function(){
11+
// Use case: return upper case string.
12+
it('should support fetching template name from the context', function(done) {
13+
var viewsDir = 'test/fixtures/' + name;
14+
var templatePath = viewsDir + '/user_template_name.' + name;
15+
var str = fs.readFileSync(templatePath).toString();
16+
17+
var locals = {
18+
user: user,
19+
views: viewsDir,
20+
filename: templatePath
21+
};
22+
23+
if (name === 'dust') {
24+
var dust = require('dustjs-helpers');
25+
dust.helpers.templateName = function(chunk, context, bodies, params) {
26+
return chunk.write(context.getTemplateName());
27+
};
28+
cons.requires.dust = dust;
29+
}
30+
31+
cons[name].render(str, locals, function(err, html){
32+
if (err) return done(err);
33+
html.should.eql('<p>Tobi</p>user_template_name');
34+
return done();
35+
});
36+
});
37+
});
38+
};

0 commit comments

Comments
 (0)