UNPKG

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