summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/handlebars.js19
-rw-r--r--lib/handlebars/ast.js5
-rw-r--r--lib/handlebars/runtime.js2
-rw-r--r--lib/handlebars/utils.js76
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 = {
+ "<": "&lt;",
+ ">": "&gt;",
+ };
+
+ var badChars = /&(?!\w+;)|[<>]/g;
+ var possible = /[&<>]/
+
+ var escapeChar = function(chr) {
+ return escape[chr] || "&amp;"
+ };
- return string.toString().replace(/&(?!\w+;)|["\\<>]/g, function(str) {
- switch(str) {
- case "&":
- return "&amp;";
- case '"':
- return "\"";
- case "\\":
- return "\\\\";
- case "<":
- return "&lt;";
- case ">":
- return "&gt;";
- 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;