summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wagenet <peter.wagenet@gmail.com>2013-01-30 22:44:30 -0800
committerPeter Wagenet <peter.wagenet@gmail.com>2013-01-30 22:44:30 -0800
commit6fe7f17c89574c419c530bd1cefc1509ef5dbff9 (patch)
tree27e16b3b0f25a13c5d54022668dbb5cfc72c25d4
parentedb6f11b42a535746f994e45f78b0458799ca704 (diff)
downloadhandlebars.js-6fe7f17c89574c419c530bd1cefc1509ef5dbff9.zip
handlebars.js-6fe7f17c89574c419c530bd1cefc1509ef5dbff9.tar.gz
handlebars.js-6fe7f17c89574c419c530bd1cefc1509ef5dbff9.tar.bz2
Improved precompile template version check
This check reduces duplicated code as well as also failing if the template was precompiled on a version before the check was added.
-rw-r--r--dist/handlebars.js14
-rw-r--r--dist/handlebars.runtime.js9
-rw-r--r--lib/handlebars/compiler/compiler.js5
-rw-r--r--lib/handlebars/runtime.js9
4 files changed, 23 insertions, 14 deletions
diff --git a/dist/handlebars.js b/dist/handlebars.js
index 072ae53..2ee6432 100644
--- a/dist/handlebars.js
+++ b/dist/handlebars.js
@@ -1381,10 +1381,7 @@ Handlebars.JavaScriptCompiler = function() {};
var source = this.mergeSource();
if (!this.isChild) {
- source = "if (Handlebars.VERSION !== '"+Handlebars.VERSION+"') {\n"+
- "throw 'Template was compiled with "+Handlebars.VERSION+", but runtime is '+Handlebars.VERSION;\n"+
- "}\n"+
- source;
+ source = "this.compiledVersion = '"+Handlebars.VERSION+"';\n"+source;
}
if (asObject) {
@@ -2126,12 +2123,17 @@ Handlebars.VM = {
}
},
programWithDepth: Handlebars.VM.programWithDepth,
- noop: Handlebars.VM.noop
+ noop: Handlebars.VM.noop,
+ compiledVersion: null
};
return function(context, options) {
options = options || {};
- return templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ if (container.compiledVersion !== Handlebars.VERSION) {
+ throw "Template was compiled with "+(container.compiledVersion || 'unknown version')+", but runtime is "+Handlebars.VERSION;
+ }
+ return result;
};
},
diff --git a/dist/handlebars.runtime.js b/dist/handlebars.runtime.js
index 13d0c78..0a023ea 100644
--- a/dist/handlebars.runtime.js
+++ b/dist/handlebars.runtime.js
@@ -249,12 +249,17 @@ Handlebars.VM = {
}
},
programWithDepth: Handlebars.VM.programWithDepth,
- noop: Handlebars.VM.noop
+ noop: Handlebars.VM.noop,
+ compiledVersion: null
};
return function(context, options) {
options = options || {};
- return templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ if (container.compiledVersion !== Handlebars.VERSION) {
+ throw "Template was compiled with "+(container.compiledVersion || 'unknown version')+", but runtime is "+Handlebars.VERSION;
+ }
+ return result;
};
},
diff --git a/lib/handlebars/compiler/compiler.js b/lib/handlebars/compiler/compiler.js
index b148bbb..e38f157 100644
--- a/lib/handlebars/compiler/compiler.js
+++ b/lib/handlebars/compiler/compiler.js
@@ -539,10 +539,7 @@ Handlebars.JavaScriptCompiler = function() {};
var source = this.mergeSource();
if (!this.isChild) {
- source = "if (Handlebars.VERSION !== '"+Handlebars.VERSION+"') {\n"+
- "throw 'Template was compiled with "+Handlebars.VERSION+", but runtime is '+Handlebars.VERSION;\n"+
- "}\n"+
- source;
+ source = "this.compiledVersion = '"+Handlebars.VERSION+"';\n"+source;
}
if (asObject) {
diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js
index f29efe4..66b550f 100644
--- a/lib/handlebars/runtime.js
+++ b/lib/handlebars/runtime.js
@@ -20,12 +20,17 @@ Handlebars.VM = {
}
},
programWithDepth: Handlebars.VM.programWithDepth,
- noop: Handlebars.VM.noop
+ noop: Handlebars.VM.noop,
+ compiledVersion: null
};
return function(context, options) {
options = options || {};
- return templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ if (container.compiledVersion !== Handlebars.VERSION) {
+ throw "Template was compiled with "+(container.compiledVersion || 'unknown version')+", but runtime is "+Handlebars.VERSION;
+ }
+ return result;
};
},