diff options
author | Peter Wagenet <peter.wagenet@gmail.com> | 2013-01-30 22:44:30 -0800 |
---|---|---|
committer | Peter Wagenet <peter.wagenet@gmail.com> | 2013-01-30 22:44:30 -0800 |
commit | 6fe7f17c89574c419c530bd1cefc1509ef5dbff9 (patch) | |
tree | 27e16b3b0f25a13c5d54022668dbb5cfc72c25d4 | |
parent | edb6f11b42a535746f994e45f78b0458799ca704 (diff) | |
download | handlebars.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.js | 14 | ||||
-rw-r--r-- | dist/handlebars.runtime.js | 9 | ||||
-rw-r--r-- | lib/handlebars/compiler/compiler.js | 5 | ||||
-rw-r--r-- | lib/handlebars/runtime.js | 9 |
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; }; }, |