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
 | 
						|
}; |