summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/compiler/compiler.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/handlebars/compiler/compiler.js')
-rw-r--r--lib/handlebars/compiler/compiler.js52
1 files changed, 26 insertions, 26 deletions
diff --git a/lib/handlebars/compiler/compiler.js b/lib/handlebars/compiler/compiler.js
index 040e99a..d120d28 100644
--- a/lib/handlebars/compiler/compiler.js
+++ b/lib/handlebars/compiler/compiler.js
@@ -421,41 +421,20 @@ Compiler.prototype = {
}
};
-export function precompile(input, options, env) {
- if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {
- throw new Exception('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);
- }
-
- options = options || {};
- if (!('data' in options)) {
- options.data = true;
- }
- if (options.compat) {
- options.useDepths = true;
- }
+export function precompile(input, options = {}, env) {
+ validateInput(input, options);
- let ast = env.parse(input, options),
- environment = new env.Compiler().compile(ast, options);
+ let environment = compileEnvironment(input, options, env);
return new env.JavaScriptCompiler().compile(environment, options);
}
export function compile(input, options = {}, env) {
- if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {
- throw new Exception('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);
- }
-
- if (!('data' in options)) {
- options.data = true;
- }
- if (options.compat) {
- options.useDepths = true;
- }
+ validateInput(input, options);
let compiled;
function compileInput() {
- let ast = env.parse(input, options),
- environment = new env.Compiler().compile(ast, options),
+ let environment = compileEnvironment(input, options, env),
templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);
return env.template(templateSpec);
}
@@ -469,6 +448,27 @@ export function compile(input, options = {}, env) {
};
}
+function validateInput(input, options) {
+ if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {
+ throw new Exception('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);
+ }
+
+ if (options.trackIds || options.stringParams) {
+ throw new Exception('TrackIds and stringParams are no longer supported. See Github #1145');
+ }
+
+ if (!('data' in options)) {
+ options.data = true;
+ }
+ if (options.compat) {
+ options.useDepths = true;
+ }
+}
+function compileEnvironment(input, options, env) {
+ let ast = env.parse(input, options);
+ return new env.Compiler().compile(ast, options);
+}
+
function argEquals(a, b) {
if (a === b) {
return true;