diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/handlebars.js | 19 | ||||
-rw-r--r-- | lib/handlebars/ast.js | 5 | ||||
-rw-r--r-- | lib/handlebars/runtime.js | 2 | ||||
-rw-r--r-- | lib/handlebars/utils.js | 76 |
4 files changed, 53 insertions, 49 deletions
diff --git a/lib/handlebars.js b/lib/handlebars.js index b6cbbc2..0b86740 100644 --- a/lib/handlebars.js +++ b/lib/handlebars.js @@ -1,13 +1,16 @@ var Handlebars = require("handlebars/compiler").Handlebars; -Handlebars.AST = require("handlebars/ast").AST; -Handlebars.HandlebarsLexer = require("handlebars/handlebars_lexer").Lexer; -Handlebars.PrintVisitor = require("handlebars/printer").PrintVisitor; -Handlebars.Runtime = require("handlebars/runtime").Runtime; -Handlebars.Context = require("Handlebars/runtime").Context; -Handlebars.Utils = require("handlebars/utils").Utils; -Handlebars.SafeString = require("handlebars/utils").SafeString; -Handlebars.Exception = require("handlebars/utils").Exception; +Handlebars.AST = require("handlebars/ast").AST; +Handlebars.HandlebarsLexer = require("handlebars/handlebars_lexer").Lexer; +Handlebars.PrintVisitor = require("handlebars/printer").PrintVisitor; +Handlebars.Runtime = require("handlebars/runtime").Runtime; +Handlebars.Context = require("Handlebars/runtime").Context; +Handlebars.Utils = require("handlebars/utils").Utils; +Handlebars.SafeString = require("handlebars/utils").SafeString; +Handlebars.Exception = require("handlebars/utils").Exception; +Handlebars.Compiler = require("handlebars/vm").Compiler; +Handlebars.JavaScriptCompiler = require("handlebars/vm").JavaScriptCompiler; +Handlebars.VM = require("handlebars/vm").VM; // BEGIN(BROWSER) diff --git a/lib/handlebars/ast.js b/lib/handlebars/ast.js index 932e52c..f42e47c 100644 --- a/lib/handlebars/ast.js +++ b/lib/handlebars/ast.js @@ -64,8 +64,9 @@ Handlebars.Exception = require("handlebars/utils").Exception; else { dig.push(part); } } - this.parts = dig; - this.depth = depth; + this.parts = dig; + this.depth = depth; + this.isSimple = (dig.length === 1) && (depth === 0) }; Handlebars.AST.StringNode = function(string) { diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js index d78f0d8..07e9485 100644 --- a/lib/handlebars/runtime.js +++ b/lib/handlebars/runtime.js @@ -104,7 +104,7 @@ Handlebars.Runtime.prototype = { mustache: function(mustache) { var idObj = this.ID(mustache.id); - var params = mustache.params; + var params = mustache.params.slice(0); var buf; for(var i=0, l=params.length; i<l; i++) { diff --git a/lib/handlebars/utils.js b/lib/handlebars/utils.js index a600d6b..bc816d5 100644 --- a/lib/handlebars/utils.js +++ b/lib/handlebars/utils.js @@ -13,47 +13,47 @@ Handlebars.SafeString.prototype.toString = function() { return this.string.toString(); }; -Handlebars.Utils = { - escapeExpression: function(string) { - // don't escape SafeStrings, since they're already safe - if (string instanceof Handlebars.SafeString) { - return string.toString(); - } - else if (string === null) { - string = ""; - } +(function() { + var escape = { + "<": "<", + ">": ">", + }; + + var badChars = /&(?!\w+;)|[<>]/g; + var possible = /[&<>]/ + + var escapeChar = function(chr) { + return escape[chr] || "&" + }; - return string.toString().replace(/&(?!\w+;)|["\\<>]/g, function(str) { - switch(str) { - case "&": - return "&"; - case '"': - return "\""; - case "\\": - return "\\\\"; - case "<": - return "<"; - case ">": - return ">"; - default: - return str; + Handlebars.Utils = { + escapeExpression: function(string) { + // don't escape SafeStrings, since they're already safe + if (string instanceof Handlebars.SafeString) { + return string.toString(); + } else if (string === null) { + string = ""; + } + + if(!possible.test(string)) { return string; } + return string.replace(badChars, escapeChar); + }, + + isEmpty: function(value) { + if (typeof value === "undefined") { + return true; + } else if (value === null) { + return true; + } else if (value === false) { + return true; + } else if(Object.prototype.toString.call(value) === "[object Array]" && value.length === 0) { + return true; + } else { + return false; } - }); - }, - isEmpty: function(value) { - if (typeof value === "undefined") { - return true; - } else if (value === null) { - return true; - } else if (value === false) { - return true; - } else if(Object.prototype.toString.call(value) === "[object Array]" && value.length === 0) { - return true; - } else { - return false; } - } -}; + }; +})(); // END(BROWSER) exports.Utils = Handlebars.Utils; |