-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathindex.js
50 lines (39 loc) · 1.28 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var through = require( 'through' );
var nunjucks = require( 'nunjucks' );
var path = require( 'path' );
module.exports = function( file, opts ) {
opts = opts || {};
var env = opts.env || nunjucks.env || new nunjucks.Environment();
var extension = opts.extension || [ '.nunj', '.njk' ];
var rootDir = opts.rootDir;
var nodeOnly = opts.node || false;
if ( !(extension instanceof Array) ) extension = [extension];
var data = "";
if( file !== undefined && extension.indexOf( path.extname( file ) ) === -1 )
return through();
else
return through( write, end );
function write(buf) {
data += buf;
}
function end() {
var precompiledTemplateString;
var compiledTemplate = '';
if (nodeOnly) {
compiledTemplate += 'var window = window || {}\n';
compiledTemplate += 'var nunjucks = require( "nunjucks" );\n';
} else {
compiledTemplate += 'var nunjucks = require( "nunjucks/browser/nunjucks-slim" );\n';
}
var templateName = file;
if( rootDir ) templateName = path.relative( rootDir, templateName );
precompiledTemplateString = nunjucks.precompileString( data, {
env : env,
name : templateName,
asFunction : true
} );
compiledTemplate += 'module.exports = ' + precompiledTemplateString + ';\n';
this.queue( compiledTemplate );
this.queue( null );
}
};