Skip to main content
Module

x/nunjucks/mod.js

A powerful templating engine with inheritance, asynchronous control, and more (Jinja 2 inspired)
Go to Latest
File
/// <reference types="./mod.d.ts" />
import * as lib from "./src/lib.js";import { Environment, Template } from "./src/environment.js";import Loader from "./src/loader.js";import * as loaders from "./src/loaders.js";import precompile from "./src/precompile.js";import compiler from "./src/compiler.js";import parser from "./src/parser.js";import lexer from "./src/lexer.js";import * as runtime from "./src/runtime.js";import nodes from "./src/nodes.js";import installJinjaCompat from "./src/jinja_compat.js";
// A single instance of an environment, since this is so commonly usedlet e;
function configure(templatesPath, opts) { opts = opts || {}; if (lib.isObject(templatesPath)) { opts = templatesPath; templatesPath = null; }
let TemplateLoader; if (loaders.FileSystemLoader) { TemplateLoader = new loaders.FileSystemLoader(templatesPath, { watch: opts.watch, noCache: opts.noCache, }); }
e = new Environment(TemplateLoader, opts);
if (opts && opts.express) { e.express(opts.express); }
return e;}
export default { Environment, Template, Loader, FileSystemLoader: loaders.FileSystemLoader, NodeResolveLoader: loaders.NodeResolveLoader, PrecompiledLoader: loaders.PrecompiledLoader, compiler, parser, lexer, runtime, lib, nodes, installJinjaCompat, configure, reset() { e = undefined; }, compile(src, env, path, eagerCompile) { if (!e) { configure(); } return new Template(src, env, path, eagerCompile); }, render(name, ctx, cb) { if (!e) { configure(); }
return e.render(name, ctx, cb); }, renderString(src, ctx, cb) { if (!e) { configure(); }
return e.renderString(src, ctx, cb); }, precompile: (precompile) ? precompile.precompile : undefined, precompileString: (precompile) ? precompile.precompileString : undefined,};