From 719f2e10dcfaae8a8e7c4681874163c04bf98505 Mon Sep 17 00:00:00 2001 From: Nick Martin Date: Tue, 5 Feb 2013 16:34:43 -0800 Subject: [PATCH] Use regexp instead of isNaN for detecting integers. --- packages/handlebars/parse.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/handlebars/parse.js b/packages/handlebars/parse.js index fa569d56b7..e1c3d72ddb 100644 --- a/packages/handlebars/parse.js +++ b/packages/handlebars/parse.js @@ -65,18 +65,20 @@ Handlebars.to_json_ast = function (code) { }; var value = function (node) { - //Work around handlebars.js Issue #422 - Negative integers for helpers get trapped as ID - if (node.type == 'ID' && node.string.slice(0,1) == '-' && !isNaN(node.string)) { //node.string eg. '-10' - //Reconstruct node + // Work around handlebars.js Issue #422 - Negative integers for + // helpers get trapped as ID. handlebars doesn't support floating + // point, just integers. + if (node.type === 'ID' && /^-\d+$/.test(node.string)) { + // Reconstruct node node.type = 'INTEGER'; node.integer = node.string; - } //EO Workaround handlebars.js Issue #422 + } var choices = { ID: function (node) {return identifier(node);}, STRING: function (node) {return ''+node.string;}, INTEGER: function (node) {return +node.integer;}, - BOOLEAN: function (node) {return (node.bool === 'true');}, + BOOLEAN: function (node) {return (node.bool === 'true');} }; if (!(node.type in choices)) throw new Error("got ast node " + node.type + " for value");