1 if(!dojo._hasResource["dojox.dtl.contrib.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["dojox.dtl.contrib.html"] = true;
3 dojo.provide("dojox.dtl.contrib.html");
5 dojo.require("dojox.dtl.html");
9 var ddch = dd.contrib.html;
11 ddch.HtmlNode = dojo.extend(function(name){
12 this.contents = new dd._Filter(name);
13 this._div = document.createElement("div");
17 render: function(context, buffer){
18 var text = this.contents.resolve(context);
20 text = text.replace(/<(\/?script)/ig, '<$1').replace(/\bon[a-z]+\s*=/ig, '');
21 if(this._rendered && this._last != text){
22 buffer = this.unrender(context, buffer);
26 // This can get reset in the above tag
28 this._rendered = true;
31 var children = div.childNodes;
32 while(children.length){
33 var removed = div.removeChild(children[0]);
34 this._lasts.push(removed);
35 buffer = buffer.concat(removed);
42 unrender: function(context, buffer){
44 this._rendered = false;
46 for(var i = 0, node; node = this._lasts[i++];){
47 buffer = buffer.remove(node);
48 dojo._destroyElement(node);
54 clone: function(buffer){
55 return new this.constructor(this.contents.getExpression());
59 ddch.StyleNode = dojo.extend(function(styles){
61 this._styles = styles;
62 for(var key in styles){
63 this.contents[key] = new dd.Template(styles[key]);
67 render: function(context, buffer){
68 for(var key in this.contents){
69 dojo.style(buffer.getParent(), key, this.contents[key].render(context));
73 unrender: function(context, buffer){
76 clone: function(buffer){
77 return new this.constructor(this._styles);
82 html: function(parser, text){
83 var parts = text.split(" ", 2);
84 return new ddch.HtmlNode(parts[1]);
86 tstyle: function(parser, text){
88 text = text.replace(/^tstyle\s+/, "");
89 var rules = text.split(/\s*;\s*/g);
90 for(var i = 0, rule; rule = rules[i]; i++){
91 var parts = rule.split(/\s*:\s*/g);
94 if(value.indexOf("{{") == 0){
98 return new ddch.StyleNode(styles);
102 dd.register.tags("dojox.dtl.contrib", {
103 "html": ["html", "attr:tstyle"]