]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/html.js
2 Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
8 define("dojo/html",["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_1
,_2
,_3
,_4
,_5
,_6
,_7
){var _8
={};_2
.setObject("dojo.html",_8
);var _9
=0;_8
._secureForInnerHtml=function(_a
){return _a
.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");};_8
._emptyNode
=_6
.empty
;_8
._setNodeContent=function(_b
,_c
){_6
.empty(_b
);if(_c
){if(typeof _c
=="string"){_c
=_6
.toDom(_c
,_b
.ownerDocument
);}if(!_c
.nodeType
&&_2
.isArrayLike(_c
)){for(var _d
=_c
.length
,i
=0;i
<_c
.length
;i
=_d
==_c
.length
?i
+1:0){_6
.place(_c
[i
],_b
,"last");}}else{_6
.place(_c
,_b
,"last");}}return _b
;};_8
._ContentSetter
=_4("dojo.html._ContentSetter",null,{node
:"",content
:"",id
:"",cleanContent
:false,extractContent
:false,parseContent
:false,parserScope
:_1
._scopeName
,startup
:true,constructor:function(_e
,_f
){_2
.mixin(this,_e
||{});_f
=this.node
=_5
.byId(this.node
||_f
);if(!this.id
){this.id
=["Setter",(_f
)?_f
.id
||_f
.tagName
:"",_9
++].join("_");}},set:function(_10
,_11
){if(undefined!==_10
){this.content
=_10
;}if(_11
){this._mixin(_11
);}this.onBegin();this.setContent();var ret
=this.onEnd();if(ret
&&ret
.then
){return ret
;}else{return this.node
;}},setContent:function(){var _12
=this.node
;if(!_12
){throw new Error(this.declaredClass
+": setContent given no node");}try{_12
=_8
._setNodeContent(_12
,this.content
);}catch(e
){var _13
=this.onContentError(e
);try{_12
.innerHTML
=_13
;}catch(e
){console
.error("Fatal "+this.declaredClass
+".setContent could not change content due to "+e
.message
,e
);}}this.node
=_12
;},empty:function(){if(this.parseDeferred
){if(!this.parseDeferred
.isResolved()){this.parseDeferred
.cancel();}delete this.parseDeferred
;}if(this.parseResults
&&this.parseResults
.length
){_3
.forEach(this.parseResults
,function(w
){if(w
.destroy
){w
.destroy();}});delete this.parseResults
;}_6
.empty(this.node
);},onBegin:function(){var _14
=this.content
;if(_2
.isString(_14
)){if(this.cleanContent
){_14
=_8
._secureForInnerHtml(_14
);}if(this.extractContent
){var _15
=_14
.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_15
){_14
=_15
[1];}}}this.empty();this.content
=_14
;return this.node
;},onEnd:function(){if(this.parseContent
){this._parse();}return this.node
;},tearDown:function(){delete this.parseResults
;delete this.parseDeferred
;delete this.node
;delete this.content
;},onContentError:function(err
){return "Error occurred setting content: "+err
;},onExecError:function(err
){return "Error occurred executing scripts: "+err
;},_mixin:function(_16
){var _17
={},key
;for(key
in _16
){if(key
in _17
){continue;}this[key
]=_16
[key
];}},_parse:function(){var _18
=this.node
;try{var _19
={};_3
.forEach(["dir","lang","textDir"],function(_1a
){if(this[_1a
]){_19
[_1a
]=this[_1a
];}},this);var _1b
=this;this.parseDeferred
=_7
.parse({rootNode
:_18
,noStart
:!this.startup
,inherited
:_19
,scope
:this.parserScope
}).then(function(_1c
){return _1b
.parseResults
=_1c
;});}catch(e
){this._onError("Content",e
,"Error parsing in _ContentSetter#"+this.id
);}},_onError:function(_1d
,err
,_1e
){var _1f
=this["on"+_1d
+"Error"].call(this,err
);if(_1e
){console
.error(_1e
,err
);}else{if(_1f
){_8
._setNodeContent(this.node
,_1f
,true);}}}});_8
.set=function(_20
,_21
,_22
){if(undefined==_21
){console
.warn("dojo.html.set: no cont argument provided, using empty string");_21
="";}if(!_22
){return _8
._setNodeContent(_20
,_21
,true);}else{var op
=new _8
._ContentSetter(_2
.mixin(_22
,{content
:_21
,node
:_20
}));return op
.set();}};return _8
;});