diff --git a/mustache.js b/mustache.js index dcb848c..a242c1c 100644 --- a/mustache.js +++ b/mustache.js @@ -59,11 +59,12 @@ var Mustache = (typeof module !== "undefined" && module.exports) || {}; "<": "<", ">": ">", '"': '"', - "'": ''' + "'": ''', + "/": '/' }; function escapeHtml(string) { - return String(string).replace(/[&<>"']/g, function (s) { + return String(string).replace(/[&<>"'\/]/g, function (s) { return entityMap[s]; }); } diff --git a/test/_files/dot_notation.js b/test/_files/dot_notation.js index ca995f7..de06a03 100644 --- a/test/_files/dot_notation.js +++ b/test/_files/dot_notation.js @@ -7,8 +7,8 @@ return this.value * 0.2; }, currency: { - symbol: '€', - name: 'Euro' + symbol: '$', + name: 'USD' } }, availability: { diff --git a/test/_files/dot_notation.txt b/test/_files/dot_notation.txt index d0e4707..08afa05 100644 --- a/test/_files/dot_notation.txt +++ b/test/_files/dot_notation.txt @@ -1,8 +1,8 @@

A Book

Authors:

-

Price: €200 Euro In Stock

-

VAT: €40

+

Price: $200 USD In Stock

+

VAT: $40

Test truthy false values:

Zero: 0

diff --git a/test/_files/escaped.js b/test/_files/escaped.js index 7735877..cd77c1f 100644 --- a/test/_files/escaped.js +++ b/test/_files/escaped.js @@ -2,5 +2,5 @@ title: function () { return "Bear > Shark"; }, - entities: """ + entities: "" \"'<>/" }) diff --git a/test/_files/escaped.txt b/test/_files/escaped.txt index 2c3ad1f..c1527d5 100644 --- a/test/_files/escaped.txt +++ b/test/_files/escaped.txt @@ -1,2 +1,2 @@

Bear > Shark

-And even &quot;, but not ". +And even &quot; "'<>/, but not " "'<>/. diff --git a/wrappers/qooxdoo/mustache.js.post b/wrappers/qooxdoo/mustache.js.post index bd4b406..aba7af6 100644 --- a/wrappers/qooxdoo/mustache.js.post +++ b/wrappers/qooxdoo/mustache.js.post @@ -4,6 +4,6 @@ // EXPOSE qooxdoo variant qx.bom.Template.version = Mustache.version; -qx.bom.Template.toHtml = Mustache.render; +qx.bom.Template.render = Mustache.render; })(); diff --git a/wrappers/qooxdoo/mustache.js.pre b/wrappers/qooxdoo/mustache.js.pre index f6b1c96..b51ccf9 100644 --- a/wrappers/qooxdoo/mustache.js.pre +++ b/wrappers/qooxdoo/mustache.js.pre @@ -5,7 +5,7 @@ http://qooxdoo.org Copyright: - 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de + 2004-2012 1&1 Internet AG, Germany, http://www.1und1.de License: LGPL: http://www.gnu.org/licenses/lgpl.html @@ -74,7 +74,7 @@ * For further details, please visit the mustache.js documentation here: * https://github.com/janl/mustache.js/blob/master/README.md */ -qx.Class.define("qx.bom.Template", { +qx.Bootstrap.define("qx.bom.Template", { statics : { /** Contains the mustache.js version. */ version: null, @@ -83,21 +83,21 @@ qx.Class.define("qx.bom.Template", { * Original and only template method of mustache.js. For further * documentation, please visit https://github.com/janl/mustache.js * - * @signature function(template, view, partials, send_fun) + * @signature function(template, view, partials) * @param template {String} The String containing the template. * @param view {Object} The object holding the data to render. * @param partials {Object} Object holding parts of a template. - * @param send_fun {Function?} Callback function for streaming. * @return {String} The parsed template. */ - toHtml: null, + render: null, /** * Helper method which provides you with a direct access to templates - * stored as HTML in the DOM. The DOM node with the given ID will be reated + * stored as HTML in the DOM. The DOM node with the given ID will be used * as a template, parsed and a new DOM node will be returned containing the - * parsed data. + * parsed data. Keep in mind to have only one root DOM element in the the + * template. * * @param id {String} The id of the HTML template in the DOM. * @param view {Object} The object holding the data to render. @@ -105,14 +105,22 @@ qx.Class.define("qx.bom.Template", { * @return {DomNode} A DOM element holding the parsed template data. */ get : function(id, view, partials) { + // get the content stored in the DOM var template = document.getElementById(id); var inner = template.innerHTML; + // apply the view inner = this.toHtml(inner, view, partials); + // special case for text only conversion + if (inner.search(/<|>/) === -1) { + return inner; + } + + // create a helper to convert the string into DOM nodes var helper = qx.bom.Element.create("div"); helper.innerHTML = inner; - + return helper.children[0]; } } @@ -124,4 +132,3 @@ qx.Class.define("qx.bom.Template", { * Below is the original mustache.js code. Snapshot date is mentioned in * the head of this file. */ - \ No newline at end of file