X_HTMLParser_fillAttrs = X_Node_Attr_noValue, //{checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};\r
\r
// Special Elements (can contain anything)\r
- X_HTMLParser_special = { SCRIPT : 1, STYLE : 1, PLAINTEXT : 1, XMP : 1, TEXTAREA : 1 };\r
+ X_HTMLParser_special = { SCRIPT : 1, STYLE : 1, PLAINTEXT : 1, XMP : 1, TEXTAREA : 1 },\r
+ \r
+ X_HTMLParser_skipFixNesting = false;\r
\r
function X_HTMLParser_exec( html, handler, async ){\r
var special = X_HTMLParser_special,\r
\r
if( async && startTime + 15 <= X_Timer_now() && html ){\r
handler.progress( 1 - html.length / async[ 0 ] );\r
- X.Timer.once( 0, X_HTMLParser_exec, [ html, handler, async ] );\r
+ X_Timer_once( 0, X_HTMLParser_exec, [ html, handler, async ] );\r
return;\r
};\r
\r
var inline = X_HTMLParser_inline,\r
parseEndTag = X_HTMLParser_parseEndTag,\r
sisters = X_HTMLParser_sisters;\r
- if ( X_HTMLParser_block[ tagName ] === 1 ) {\r
- while ( last && inline[ last ] === 1 ) {\r
+ if( !X_HTMLParser_skipFixNesting && X_HTMLParser_block[ tagName ] === 1 ){\r
+ while( last && inline[ last ] === 1 ){\r
parseEndTag( stack, handler, last );\r
last = stack[ stack.length - 1 ];\r
};\r
l = nest.length,\r
attr, name, i, _attrs; //, toIndex;\r
if( l ){\r
- xnode = nest[ l - 1 ].create( tagName );\r
+ xnode = nest[ l - 1 ][ 'create' ]( tagName );\r
} else {\r
- xnode = flat[ flat.length ] = X.Node.create( tagName );\r
+ xnode = flat[ flat.length ] = X_Doc_create( tagName );\r
};\r
if( !noChild ) nest[ l ] = xnode;\r
if( i = attrs.length ){\r
_attrs = {};\r
for( ; i; ){\r
if( attr = attrs[ --i ] ){\r
- if( X.Type.isString( attr ) ){\r
+ if( X_Type_isString( attr ) ){\r
name = attr;\r
_attrs[ name ] = true;\r
} else {\r
},\r
chars : function( text ){\r
if( X_HTMLParser_htmlStringToXNode.nest.length ){\r
- X_HTMLParser_htmlStringToXNode.nest[ X_HTMLParser_htmlStringToXNode.nest.length - 1 ].createText( text );\r
+ X_HTMLParser_htmlStringToXNode.nest[ X_HTMLParser_htmlStringToXNode.nest.length - 1 ][ 'createText' ]( text );\r
} else {\r
- X_HTMLParser_htmlStringToXNode.flat[ X_HTMLParser_htmlStringToXNode.flat.length ] = X.Node.createText( text );\r
+ X_HTMLParser_htmlStringToXNode.flat[ X_HTMLParser_htmlStringToXNode.flat.length ] = X_Doc_createText( text );\r
};\r
},\r
- comment : X.emptyFunction\r
+ comment : X_emptyFunction\r
};\r
\r
function X_HtmlParser_parse( html, ignoreError ){\r
var X_HTMLParser_asyncHtmlStringToXNode = {\r
err : function( html ){\r
X_HTMLParser_htmlStringToXNode.err( html );\r
- this.asyncDispatch( X.Event.ERROR );\r
+ this[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
},\r
start : X_HTMLParser_htmlStringToXNode.start,\r
end : X_HTMLParser_htmlStringToXNode.end,\r
chars : X_HTMLParser_htmlStringToXNode.chars,\r
- comment : X.emptyFunction,\r
+ comment : X_emptyFunction,\r
\r
progress : function( pct ){\r
- this.asyncDispatch( { type : X.Event.PROGRESS, percent : pct } );\r
+ this[ 'asyncDispatch' ]( { type : X_EVENT_PROGRESS, percent : pct } );\r
},\r
complete : function(){\r
var ret = X_HTMLParser_htmlStringToXNode.flat;\r
delete X_HTMLParser_htmlStringToXNode.flat;\r
- this.asyncDispatch( { type : X.Event.SUCCESS, xnodes : ret } );\r
+ this[ 'asyncDispatch' ]( { type : X_EVENT_SUCCESS, xnodes : ret } );\r
}\r
};\r
\r
function X_HTMLParser_asyncParse( html, ignoreError ){\r
- var dispatcher = X_Class_override( new X.EventDispatcher(), X_HTMLParser_asyncHtmlStringToXNode ),\r
+ var dispatcher = X_Class_override( X_EventDispatcher(), X_HTMLParser_asyncHtmlStringToXNode ),\r
worker = X_HTMLParser_htmlStringToXNode;\r
- dispatcher.listenOnce( X.Event.SUCCESS, dispatcher, dispatcher.kill );\r
+ dispatcher[ 'listenOnce' ]( X_EVENT_SUCCESS, dispatcher, dispatcher.kill );\r
worker.flat = [];\r
worker.nest.length = 0;\r
worker.ignoreError = ignoreError;\r