blob: 4246b4988e9a214dc7ccc27354c4ea3a66ad0f71 [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.dtl.dom"]){
dojo._hasResource["dojox.dtl.dom"]=true;
dojo.provide("dojox.dtl.dom");
dojo.require("dojox.dtl._base");
dojo.require("dojox.dtl.Context");
(function(){
var dd=dojox.dtl;
dd.BOOLS={checked:1,disabled:1,readonly:1};
dd.TOKEN_CHANGE=-11;
dd.TOKEN_ATTR=-12;
dd.TOKEN_CUSTOM=-13;
dd.TOKEN_NODE=1;
var _1=dd.text;
var _2=dd.dom={_attributes:{},_uppers:{},_re4:/^function anonymous\(\)\s*{\s*(.*)\s*}$/,_reTrim:/(?:^[\n\s]*(\{%)?\s*|\s*(%\})?[\n\s]*$)/g,_reSplit:/\s*%\}[\n\s]*\{%\s*/g,getTemplate:function(_3){
if(typeof this._commentable=="undefined"){
this._commentable=false;
var _4=document.createElement("div");
_4.innerHTML="<!--Test comment handling, and long comments, using comments whenever possible.-->";
if(_4.childNodes.length&&_4.childNodes[0].nodeType==8&&_4.childNodes[0].data=="comment"){
this._commentable=true;
}
}
if(!this._commentable){
_3=_3.replace(/<!--({({|%).*?(%|})})-->/g,"$1");
}
if(dojo.isIE){
_3=_3.replace(/\b(checked|disabled|readonly|style)="/g,"t$1=\"");
}
_3=_3.replace(/\bstyle="/g,"tstyle=\"");
var _5;
var _6=dojo.isWebKit;
var _7=[[true,"select","option"],[_6,"tr","td|th"],[_6,"thead","tr","th"],[_6,"tbody","tr","td"],[_6,"table","tbody|thead|tr","tr","td"]];
var _8=[];
for(var i=0,_9;_9=_7[i];i++){
if(!_9[0]){
continue;
}
if(_3.indexOf("<"+_9[1])!=-1){
var _a=new RegExp("<"+_9[1]+"(?:.|\n)*?>((?:.|\n)+?)</"+_9[1]+">","ig");
tagLoop:
while(_5=_a.exec(_3)){
var _b=_9[2].split("|");
var _c=[];
for(var j=0,_d;_d=_b[j];j++){
_c.push("<"+_d+"(?:.|\n)*?>(?:.|\n)*?</"+_d+">");
}
var _e=[];
var _f=dojox.string.tokenize(_5[1],new RegExp("("+_c.join("|")+")","ig"),function(_10){
var tag=/<(\w+)/.exec(_10)[1];
if(!_e[tag]){
_e[tag]=true;
_e.push(tag);
}
return {data:_10};
});
if(_e.length){
var tag=(_e.length==1)?_e[0]:_9[2].split("|")[0];
var _11=[];
for(var j=0,jl=_f.length;j<jl;j++){
var _12=_f[j];
if(dojo.isObject(_12)){
_11.push(_12.data);
}else{
var _13=_12.replace(this._reTrim,"");
if(!_13){
continue;
}
_12=_13.split(this._reSplit);
for(var k=0,kl=_12.length;k<kl;k++){
var _14="";
for(var p=2,pl=_9.length;p<pl;p++){
if(p==2){
_14+="<"+tag+" dtlinstruction=\"{% "+_12[k].replace("\"","\\\"")+" %}\">";
}else{
if(tag==_9[p]){
continue;
}else{
_14+="<"+_9[p]+">";
}
}
}
_14+="DTL";
for(var p=_9.length-1;p>1;p--){
if(p==2){
_14+="</"+tag+">";
}else{
if(tag==_9[p]){
continue;
}else{
_14+="</"+_9[p]+">";
}
}
}
_11.push("ÿ"+_8.length);
_8.push(_14);
}
}
}
_3=_3.replace(_5[1],_11.join(""));
}
}
}
}
for(var i=_8.length;i--;){
_3=_3.replace("ÿ"+i,_8[i]);
}
var re=/\b([a-zA-Z_:][a-zA-Z0-9_\-\.:]*)=['"]/g;
while(_5=re.exec(_3)){
var _15=_5[1].toLowerCase();
if(_15=="dtlinstruction"){
continue;
}
if(_15!=_5[1]){
this._uppers[_15]=_5[1];
}
this._attributes[_15]=true;
}
var _4=document.createElement("div");
_4.innerHTML=_3;
var _16={nodes:[]};
while(_4.childNodes.length){
_16.nodes.push(_4.removeChild(_4.childNodes[0]));
}
return _16;
},tokenize:function(_17){
var _18=[];
for(var i=0,_19;_19=_17[i++];){
if(_19.nodeType!=1){
this.__tokenize(_19,_18);
}else{
this._tokenize(_19,_18);
}
}
return _18;
},_swallowed:[],_tokenize:function(_1a,_1b){
var _1c=false;
var _1d=this._swallowed;
var i,j,tag,_1e;
if(!_1b.first){
_1c=_1b.first=true;
var _1f=dd.register.getAttributeTags();
for(i=0;tag=_1f[i];i++){
try{
(tag[2])({swallowNode:function(){
throw 1;
}},new dd.Token(dd.TOKEN_ATTR,""));
}
catch(e){
_1d.push(tag);
}
}
}
for(i=0;tag=_1d[i];i++){
var _20=_1a.getAttribute(tag[0]);
if(_20){
var _1d=false;
var _21=(tag[2])({swallowNode:function(){
_1d=true;
return _1a;
}},new dd.Token(dd.TOKEN_ATTR,tag[0]+" "+_20));
if(_1d){
if(_1a.parentNode&&_1a.parentNode.removeChild){
_1a.parentNode.removeChild(_1a);
}
_1b.push([dd.TOKEN_CUSTOM,_21]);
return;
}
}
}
var _22=[];
if(dojo.isIE&&_1a.tagName=="SCRIPT"){
_22.push({nodeType:3,data:_1a.text});
_1a.text="";
}else{
for(i=0;_1e=_1a.childNodes[i];i++){
_22.push(_1e);
}
}
_1b.push([dd.TOKEN_NODE,_1a]);
var _23=false;
if(_22.length){
_1b.push([dd.TOKEN_CHANGE,_1a]);
_23=true;
}
for(var key in this._attributes){
var _24=false;
var _25="";
if(key=="class"){
_25=_1a.className||_25;
}else{
if(key=="for"){
_25=_1a.htmlFor||_25;
}else{
if(key=="value"&&_1a.value==_1a.innerHTML){
continue;
}else{
if(_1a.getAttribute){
_25=_1a.getAttribute(key,2)||_25;
if(key=="href"||key=="src"){
if(dojo.isIE){
var _26=location.href.lastIndexOf(location.hash);
var _27=location.href.substring(0,_26).split("/");
_27.pop();
_27=_27.join("/")+"/";
if(_25.indexOf(_27)==0){
_25=_25.replace(_27,"");
}
_25=decodeURIComponent(_25);
}
}else{
if(key=="tstyle"){
_24=key;
key="style";
}else{
if(dd.BOOLS[key.slice(1)]&&dojo.trim(_25)){
key=key.slice(1);
}else{
if(this._uppers[key]&&dojo.trim(_25)){
_24=this._uppers[key];
}
}
}
}
}
}
}
}
if(_24){
_1a.setAttribute(_24,"");
_1a.removeAttribute(_24);
}
if(typeof _25=="function"){
_25=_25.toString().replace(this._re4,"$1");
}
if(!_23){
_1b.push([dd.TOKEN_CHANGE,_1a]);
_23=true;
}
_1b.push([dd.TOKEN_ATTR,_1a,key,_25]);
}
for(i=0,_1e;_1e=_22[i];i++){
if(_1e.nodeType==1){
var _28=_1e.getAttribute("dtlinstruction");
if(_28){
_1e.parentNode.removeChild(_1e);
_1e={nodeType:8,data:_28};
}
}
this.__tokenize(_1e,_1b);
}
if(!_1c&&_1a.parentNode&&_1a.parentNode.tagName){
if(_23){
_1b.push([dd.TOKEN_CHANGE,_1a,true]);
}
_1b.push([dd.TOKEN_CHANGE,_1a.parentNode]);
_1a.parentNode.removeChild(_1a);
}else{
_1b.push([dd.TOKEN_CHANGE,_1a,true,true]);
}
},__tokenize:function(_29,_2a){
var _2b=_29.data;
switch(_29.nodeType){
case 1:
this._tokenize(_29,_2a);
return;
case 3:
if(_2b.match(/[^\s\n]/)&&(_2b.indexOf("{{")!=-1||_2b.indexOf("{%")!=-1)){
var _2c=_1.tokenize(_2b);
for(var j=0,_2d;_2d=_2c[j];j++){
if(typeof _2d=="string"){
_2a.push([dd.TOKEN_TEXT,_2d]);
}else{
_2a.push(_2d);
}
}
}else{
_2a.push([_29.nodeType,_29]);
}
if(_29.parentNode){
_29.parentNode.removeChild(_29);
}
return;
case 8:
if(_2b.indexOf("{%")==0){
var _2d=dojo.trim(_2b.slice(2,-2));
if(_2d.substr(0,5)=="load "){
var _2e=dojo.trim(_2d).split(/\s+/g);
for(var i=1,_2f;_2f=_2e[i];i++){
dojo["require"](_2f);
}
}
_2a.push([dd.TOKEN_BLOCK,_2d]);
}
if(_2b.indexOf("{{")==0){
_2a.push([dd.TOKEN_VAR,dojo.trim(_2b.slice(2,-2))]);
}
if(_29.parentNode){
_29.parentNode.removeChild(_29);
}
return;
}
}};
dd.DomTemplate=dojo.extend(function(obj){
if(!obj.nodes){
var _30=dojo.byId(obj);
if(_30&&_30.nodeType==1){
dojo.forEach(["class","src","href","name","value"],function(_31){
_2._attributes[_31]=true;
});
obj={nodes:[_30]};
}else{
if(typeof obj=="object"){
obj=_1.getTemplateString(obj);
}
obj=_2.getTemplate(obj);
}
}
var _32=_2.tokenize(obj.nodes);
if(dd.tests){
this.tokens=_32.slice(0);
}
var _33=new dd._DomParser(_32);
this.nodelist=_33.parse();
},{_count:0,_re:/\bdojo:([a-zA-Z0-9_]+)\b/g,setClass:function(str){
this.getRootNode().className=str;
},getRootNode:function(){
return this.buffer.rootNode;
},getBuffer:function(){
return new dd.DomBuffer();
},render:function(_34,_35){
_35=this.buffer=_35||this.getBuffer();
this.rootNode=null;
var _36=this.nodelist.render(_34||new dd.Context({}),_35);
for(var i=0,_37;_37=_35._cache[i];i++){
if(_37._cache){
_37._cache.length=0;
}
}
return _36;
},unrender:function(_38,_39){
return this.nodelist.unrender(_38,_39);
}});
dd.DomBuffer=dojo.extend(function(_3a){
this._parent=_3a;
this._cache=[];
},{concat:function(_3b){
var _3c=this._parent;
if(_3c&&_3b.parentNode&&_3b.parentNode===_3c&&!_3c._dirty){
return this;
}
if(_3b.nodeType==1&&!this.rootNode){
this.rootNode=_3b||true;
return this;
}
if(!_3c){
if(_3b.nodeType==3&&dojo.trim(_3b.data)){
throw new Error("Text should not exist outside of the root node in template");
}
return this;
}
if(this._closed){
if(_3b.nodeType==3&&!dojo.trim(_3b.data)){
return this;
}else{
throw new Error("Content should not exist outside of the root node in template");
}
}
if(_3c._dirty){
if(_3b._drawn&&_3b.parentNode==_3c){
var _3d=_3c._cache;
if(_3d){
for(var i=0,_3e;_3e=_3d[i];i++){
this.onAddNode&&this.onAddNode(_3e);
_3c.insertBefore(_3e,_3b);
this.onAddNodeComplete&&this.onAddNodeComplete(_3e);
}
_3d.length=0;
}
}
_3c._dirty=false;
}
if(!_3c._cache){
_3c._cache=[];
this._cache.push(_3c);
}
_3c._dirty=true;
_3c._cache.push(_3b);
return this;
},remove:function(obj){
if(typeof obj=="string"){
if(this._parent){
this._parent.removeAttribute(obj);
}
}else{
if(obj.nodeType==1&&!this.getRootNode()&&!this._removed){
this._removed=true;
return this;
}
if(obj.parentNode){
this.onRemoveNode&&this.onRemoveNode(obj);
if(obj.parentNode){
obj.parentNode.removeChild(obj);
}
}
}
return this;
},setAttribute:function(key,_3f){
var old=dojo.attr(this._parent,key);
if(this.onChangeAttribute&&old!=_3f){
this.onChangeAttribute(this._parent,key,old,_3f);
}
if(key=="style"){
this._parent.style.cssText=_3f;
}else{
dojo.attr(this._parent,key,_3f);
}
return this;
},addEvent:function(_40,_41,fn,_42){
if(!_40.getThis()){
throw new Error("You must use Context.setObject(instance)");
}
this.onAddEvent&&this.onAddEvent(this.getParent(),_41,fn);
var _43=fn;
if(dojo.isArray(_42)){
_43=function(e){
this[fn].apply(this,[e].concat(_42));
};
}
return dojo.connect(this.getParent(),_41,_40.getThis(),_43);
},setParent:function(_44,up,_45){
if(!this._parent){
this._parent=this._first=_44;
}
if(up&&_45&&_44===this._first){
this._closed=true;
}
if(up){
var _46=this._parent;
var _47="";
var ie=dojo.isIE&&_46.tagName=="SCRIPT";
if(ie){
_46.text="";
}
if(_46._dirty){
var _48=_46._cache;
var _49=(_46.tagName=="SELECT"&&!_46.options.length);
for(var i=0,_4a;_4a=_48[i];i++){
if(_4a!==_46){
this.onAddNode&&this.onAddNode(_4a);
if(ie){
_47+=_4a.data;
}else{
_46.appendChild(_4a);
if(_49&&_4a.defaultSelected&&i){
_49=i;
}
}
this.onAddNodeComplete&&this.onAddNodeComplete(_4a);
}
}
if(_49){
_46.options.selectedIndex=(typeof _49=="number")?_49:0;
}
_48.length=0;
_46._dirty=false;
}
if(ie){
_46.text=_47;
}
}
this._parent=_44;
this.onSetParent&&this.onSetParent(_44,up,_45);
return this;
},getParent:function(){
return this._parent;
},getRootNode:function(){
return this.rootNode;
}});
dd._DomNode=dojo.extend(function(_4b){
this.contents=_4b;
},{render:function(_4c,_4d){
this._rendered=true;
return _4d.concat(this.contents);
},unrender:function(_4e,_4f){
if(!this._rendered){
return _4f;
}
this._rendered=false;
return _4f.remove(this.contents);
},clone:function(_50){
return new this.constructor(this.contents);
}});
dd._DomNodeList=dojo.extend(function(_51){
this.contents=_51||[];
},{push:function(_52){
this.contents.push(_52);
},unshift:function(_53){
this.contents.unshift(_53);
},render:function(_54,_55,_56){
_55=_55||dd.DomTemplate.prototype.getBuffer();
if(_56){
var _57=_55.getParent();
}
for(var i=0;i<this.contents.length;i++){
_55=this.contents[i].render(_54,_55);
if(!_55){
throw new Error("Template node render functions must return their buffer");
}
}
if(_57){
_55.setParent(_57);
}
return _55;
},dummyRender:function(_58,_59,_5a){
var div=document.createElement("div");
var _5b=_59.getParent();
var old=_5b._clone;
_5b._clone=div;
var _5c=this.clone(_59,div);
if(old){
_5b._clone=old;
}else{
_5b._clone=null;
}
_59=dd.DomTemplate.prototype.getBuffer();
_5c.unshift(new dd.ChangeNode(div));
_5c.unshift(new dd._DomNode(div));
_5c.push(new dd.ChangeNode(div,true));
_5c.render(_58,_59);
if(_5a){
return _59.getRootNode();
}
var _5d=div.innerHTML;
return (dojo.isIE)?_5d.replace(/\s*_(dirty|clone)="[^"]*"/g,""):_5d;
},unrender:function(_5e,_5f,_60){
if(_60){
var _61=_5f.getParent();
}
for(var i=0;i<this.contents.length;i++){
_5f=this.contents[i].unrender(_5e,_5f);
if(!_5f){
throw new Error("Template node render functions must return their buffer");
}
}
if(_61){
_5f.setParent(_61);
}
return _5f;
},clone:function(_62){
var _63=_62.getParent();
var _64=this.contents;
var _65=new dd._DomNodeList();
var _66=[];
for(var i=0;i<_64.length;i++){
var _67=_64[i].clone(_62);
if(_67 instanceof dd.ChangeNode||_67 instanceof dd._DomNode){
var _68=_67.contents._clone;
if(_68){
_67.contents=_68;
}else{
if(_63!=_67.contents&&_67 instanceof dd._DomNode){
var _69=_67.contents;
_67.contents=_67.contents.cloneNode(false);
_62.onClone&&_62.onClone(_69,_67.contents);
_66.push(_69);
_69._clone=_67.contents;
}
}
}
_65.push(_67);
}
for(var i=0,_67;_67=_66[i];i++){
_67._clone=null;
}
return _65;
},rtrim:function(){
while(1){
var i=this.contents.length-1;
if(this.contents[i] instanceof dd._DomTextNode&&this.contents[i].isEmpty()){
this.contents.pop();
}else{
break;
}
}
return this;
}});
dd._DomVarNode=dojo.extend(function(str){
this.contents=new dd._Filter(str);
},{render:function(_6a,_6b){
var str=this.contents.resolve(_6a);
var _6c="text";
if(str){
if(str.render&&str.getRootNode){
_6c="injection";
}else{
if(str.safe){
if(str.nodeType){
_6c="node";
}else{
if(str.toString){
str=str.toString();
_6c="html";
}
}
}
}
}
if(this._type&&_6c!=this._type){
this.unrender(_6a,_6b);
}
this._type=_6c;
switch(_6c){
case "text":
this._rendered=true;
this._txt=this._txt||document.createTextNode(str);
if(this._txt.data!=str){
var old=this._txt.data;
this._txt.data=str;
_6b.onChangeData&&_6b.onChangeData(this._txt,old,this._txt.data);
}
return _6b.concat(this._txt);
case "injection":
var _6d=str.getRootNode();
if(this._rendered&&_6d!=this._root){
_6b=this.unrender(_6a,_6b);
}
this._root=_6d;
var _6e=this._injected=new dd._DomNodeList();
_6e.push(new dd.ChangeNode(_6b.getParent()));
_6e.push(new dd._DomNode(_6d));
_6e.push(str);
_6e.push(new dd.ChangeNode(_6b.getParent()));
this._rendered=true;
return _6e.render(_6a,_6b);
case "node":
this._rendered=true;
if(this._node&&this._node!=str&&this._node.parentNode&&this._node.parentNode===_6b.getParent()){
this._node.parentNode.removeChild(this._node);
}
this._node=str;
return _6b.concat(str);
case "html":
if(this._rendered&&this._src!=str){
_6b=this.unrender(_6a,_6b);
}
this._src=str;
if(!this._rendered){
this._rendered=true;
this._html=this._html||[];
var div=(this._div=this._div||document.createElement("div"));
div.innerHTML=str;
var _6f=div.childNodes;
while(_6f.length){
var _70=div.removeChild(_6f[0]);
this._html.push(_70);
_6b=_6b.concat(_70);
}
}
return _6b;
default:
return _6b;
}
},unrender:function(_71,_72){
if(!this._rendered){
return _72;
}
this._rendered=false;
switch(this._type){
case "text":
return _72.remove(this._txt);
case "injection":
return this._injection.unrender(_71,_72);
case "node":
if(this._node.parentNode===_72.getParent()){
return _72.remove(this._node);
}
return _72;
case "html":
for(var i=0,l=this._html.length;i<l;i++){
_72=_72.remove(this._html[i]);
}
return _72;
default:
return _72;
}
},clone:function(){
return new this.constructor(this.contents.getExpression());
}});
dd.ChangeNode=dojo.extend(function(_73,up,_74){
this.contents=_73;
this.up=up;
this.root=_74;
},{render:function(_75,_76){
return _76.setParent(this.contents,this.up,this.root);
},unrender:function(_77,_78){
if(!_78.getParent()){
return _78;
}
return _78.setParent(this.contents);
},clone:function(){
return new this.constructor(this.contents,this.up,this.root);
}});
dd.AttributeNode=dojo.extend(function(key,_79){
this.key=key;
this.value=_79;
this.contents=_79;
if(this._pool[_79]){
this.nodelist=this._pool[_79];
}else{
if(!(this.nodelist=dd.quickFilter(_79))){
this.nodelist=(new dd.Template(_79,true)).nodelist;
}
this._pool[_79]=this.nodelist;
}
this.contents="";
},{_pool:{},render:function(_7a,_7b){
var key=this.key;
var _7c=this.nodelist.dummyRender(_7a);
if(dd.BOOLS[key]){
_7c=!(_7c=="false"||_7c=="undefined"||!_7c);
}
if(_7c!==this.contents){
this.contents=_7c;
return _7b.setAttribute(key,_7c);
}
return _7b;
},unrender:function(_7d,_7e){
this.contents="";
return _7e.remove(this.key);
},clone:function(_7f){
return new this.constructor(this.key,this.value);
}});
dd._DomTextNode=dojo.extend(function(str){
this.contents=document.createTextNode(str);
this.upcoming=str;
},{set:function(_80){
this.upcoming=_80;
return this;
},render:function(_81,_82){
if(this.contents.data!=this.upcoming){
var old=this.contents.data;
this.contents.data=this.upcoming;
_82.onChangeData&&_82.onChangeData(this.contents,old,this.upcoming);
}
return _82.concat(this.contents);
},unrender:function(_83,_84){
return _84.remove(this.contents);
},isEmpty:function(){
return !dojo.trim(this.contents.data);
},clone:function(){
return new this.constructor(this.contents.data);
}});
dd._DomParser=dojo.extend(function(_85){
this.contents=_85;
},{i:0,parse:function(_86){
var _87={};
var _88=this.contents;
if(!_86){
_86=[];
}
for(var i=0;i<_86.length;i++){
_87[_86[i]]=true;
}
var _89=new dd._DomNodeList();
while(this.i<_88.length){
var _8a=_88[this.i++];
var _8b=_8a[0];
var _8c=_8a[1];
if(_8b==dd.TOKEN_CUSTOM){
_89.push(_8c);
}else{
if(_8b==dd.TOKEN_CHANGE){
var _8d=new dd.ChangeNode(_8c,_8a[2],_8a[3]);
_8c[_8d.attr]=_8d;
_89.push(_8d);
}else{
if(_8b==dd.TOKEN_ATTR){
var fn=_1.getTag("attr:"+_8a[2],true);
if(fn&&_8a[3]){
if(_8a[3].indexOf("{%")!=-1||_8a[3].indexOf("{{")!=-1){
_8c.setAttribute(_8a[2],"");
}
_89.push(fn(null,new dd.Token(_8b,_8a[2]+" "+_8a[3])));
}else{
if(dojo.isString(_8a[3])){
if(_8a[2]=="style"||_8a[3].indexOf("{%")!=-1||_8a[3].indexOf("{{")!=-1){
_89.push(new dd.AttributeNode(_8a[2],_8a[3]));
}else{
if(dojo.trim(_8a[3])){
try{
dojo.attr(_8c,_8a[2],_8a[3]);
}
catch(e){
}
}
}
}
}
}else{
if(_8b==dd.TOKEN_NODE){
var fn=_1.getTag("node:"+_8c.tagName.toLowerCase(),true);
if(fn){
_89.push(fn(null,new dd.Token(_8b,_8c),_8c.tagName.toLowerCase()));
}
_89.push(new dd._DomNode(_8c));
}else{
if(_8b==dd.TOKEN_VAR){
_89.push(new dd._DomVarNode(_8c));
}else{
if(_8b==dd.TOKEN_TEXT){
_89.push(new dd._DomTextNode(_8c.data||_8c));
}else{
if(_8b==dd.TOKEN_BLOCK){
if(_87[_8c]){
--this.i;
return _89;
}
var cmd=_8c.split(/\s+/g);
if(cmd.length){
cmd=cmd[0];
var fn=_1.getTag(cmd);
if(typeof fn!="function"){
throw new Error("Function not found for "+cmd);
}
var tpl=fn(this,new dd.Token(_8b,_8c));
if(tpl){
_89.push(tpl);
}
}
}
}
}
}
}
}
}
}
if(_86.length){
throw new Error("Could not find closing tag(s): "+_86.toString());
}
return _89;
},next_token:function(){
var _8e=this.contents[this.i++];
return new dd.Token(_8e[0],_8e[1]);
},delete_first_token:function(){
this.i++;
},skip_past:function(_8f){
return dd._Parser.prototype.skip_past.call(this,_8f);
},create_variable_node:function(_90){
return new dd._DomVarNode(_90);
},create_text_node:function(_91){
return new dd._DomTextNode(_91||"");
},getTemplate:function(loc){
return new dd.DomTemplate(_2.getTemplate(loc));
}});
})();
}