You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.3 KiB
103 lines
2.3 KiB
'use strict'; |
|
|
|
var lib = require('./src/lib'); |
|
|
|
var _require = require('./src/environment'), |
|
Environment = _require.Environment, |
|
Template = _require.Template; |
|
|
|
var Loader = require('./src/loader'); |
|
|
|
var loaders = require('./src/loaders'); |
|
|
|
var precompile = require('./src/precompile'); |
|
|
|
var compiler = require('./src/compiler'); |
|
|
|
var parser = require('./src/parser'); |
|
|
|
var lexer = require('./src/lexer'); |
|
|
|
var runtime = require('./src/runtime'); |
|
|
|
var nodes = require('./src/nodes'); |
|
|
|
var installJinjaCompat = require('./src/jinja-compat'); // A single instance of an environment, since this is so commonly used |
|
|
|
|
|
var e; |
|
|
|
function configure(templatesPath, opts) { |
|
opts = opts || {}; |
|
|
|
if (lib.isObject(templatesPath)) { |
|
opts = templatesPath; |
|
templatesPath = null; |
|
} |
|
|
|
var TemplateLoader; |
|
|
|
if (loaders.FileSystemLoader) { |
|
TemplateLoader = new loaders.FileSystemLoader(templatesPath, { |
|
watch: opts.watch, |
|
noCache: opts.noCache |
|
}); |
|
} else if (loaders.WebLoader) { |
|
TemplateLoader = new loaders.WebLoader(templatesPath, { |
|
useCache: opts.web && opts.web.useCache, |
|
async: opts.web && opts.web.async |
|
}); |
|
} |
|
|
|
e = new Environment(TemplateLoader, opts); |
|
|
|
if (opts && opts.express) { |
|
e.express(opts.express); |
|
} |
|
|
|
return e; |
|
} |
|
|
|
module.exports = { |
|
Environment: Environment, |
|
Template: Template, |
|
Loader: Loader, |
|
FileSystemLoader: loaders.FileSystemLoader, |
|
NodeResolveLoader: loaders.NodeResolveLoader, |
|
PrecompiledLoader: loaders.PrecompiledLoader, |
|
WebLoader: loaders.WebLoader, |
|
compiler: compiler, |
|
parser: parser, |
|
lexer: lexer, |
|
runtime: runtime, |
|
lib: lib, |
|
nodes: nodes, |
|
installJinjaCompat: installJinjaCompat, |
|
configure: configure, |
|
reset: function reset() { |
|
e = undefined; |
|
}, |
|
compile: function compile(src, env, path, eagerCompile) { |
|
if (!e) { |
|
configure(); |
|
} |
|
|
|
return new Template(src, env, path, eagerCompile); |
|
}, |
|
render: function render(name, ctx, cb) { |
|
if (!e) { |
|
configure(); |
|
} |
|
|
|
return e.render(name, ctx, cb); |
|
}, |
|
renderString: function renderString(src, ctx, cb) { |
|
if (!e) { |
|
configure(); |
|
} |
|
|
|
return e.renderString(src, ctx, cb); |
|
}, |
|
precompile: precompile ? precompile.precompile : undefined, |
|
precompileString: precompile ? precompile.precompileString : undefined |
|
}; |