1'use strict'; 2 3var lib = require('./src/lib'); 4var _require = require('./src/environment'), 5 Environment = _require.Environment, 6 Template = _require.Template; 7var Loader = require('./src/loader'); 8var loaders = require('./src/loaders'); 9var precompile = require('./src/precompile'); 10var compiler = require('./src/compiler'); 11var parser = require('./src/parser'); 12var lexer = require('./src/lexer'); 13var runtime = require('./src/runtime'); 14var nodes = require('./src/nodes'); 15var installJinjaCompat = require('./src/jinja-compat'); 16 17// A single instance of an environment, since this is so commonly used 18var e; 19function configure(templatesPath, opts) { 20 opts = opts || {}; 21 if (lib.isObject(templatesPath)) { 22 opts = templatesPath; 23 templatesPath = null; 24 } 25 var TemplateLoader; 26 if (loaders.FileSystemLoader) { 27 TemplateLoader = new loaders.FileSystemLoader(templatesPath, { 28 watch: opts.watch, 29 noCache: opts.noCache 30 }); 31 } else if (loaders.WebLoader) { 32 TemplateLoader = new loaders.WebLoader(templatesPath, { 33 useCache: opts.web && opts.web.useCache, 34 async: opts.web && opts.web.async 35 }); 36 } 37 e = new Environment(TemplateLoader, opts); 38 if (opts && opts.express) { 39 e.express(opts.express); 40 } 41 return e; 42} 43module.exports = { 44 Environment: Environment, 45 Template: Template, 46 Loader: Loader, 47 FileSystemLoader: loaders.FileSystemLoader, 48 NodeResolveLoader: loaders.NodeResolveLoader, 49 PrecompiledLoader: loaders.PrecompiledLoader, 50 WebLoader: loaders.WebLoader, 51 compiler: compiler, 52 parser: parser, 53 lexer: lexer, 54 runtime: runtime, 55 lib: lib, 56 nodes: nodes, 57 installJinjaCompat: installJinjaCompat, 58 configure: configure, 59 reset: function reset() { 60 e = undefined; 61 }, 62 compile: function compile(src, env, path, eagerCompile) { 63 if (!e) { 64 configure(); 65 } 66 return new Template(src, env, path, eagerCompile); 67 }, 68 render: function render(name, ctx, cb) { 69 if (!e) { 70 configure(); 71 } 72 return e.render(name, ctx, cb); 73 }, 74 renderString: function renderString(src, ctx, cb) { 75 if (!e) { 76 configure(); 77 } 78 return e.renderString(src, ctx, cb); 79 }, 80 precompile: precompile ? precompile.precompile : undefined, 81 precompileString: precompile ? precompile.precompileString : undefined 82};