X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F05_util%2F04_XXML.js;h=df77214bfdbc1f8e44cb300ae87872772f7ccbdc;hb=43b7875a2aadc07439db67724e60644f129bcc90;hp=38fcaf3cfbe284c911f9ccaae174920e378d79da;hpb=9ba2ba4de00464f81805b28dfcab8814a46da5e5;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/05_util/04_XXML.js b/0.6.x/js/05_util/04_XXML.js index 38fcaf3..df77214 100644 --- a/0.6.x/js/05_util/04_XXML.js +++ b/0.6.x/js/05_util/04_XXML.js @@ -171,7 +171,7 @@ function XMLWrapper_val( queryString, type ){ n = -1; isMulti = isMulti || 1 < l; - console.log( 'combinator ' + combinator ); + //console.log( 'combinator ' + combinator ); switch( combinator ){ // > TagName|* @@ -222,12 +222,12 @@ function XMLWrapper_val( queryString, type ){ break; default : if( combinator === 1 || ( isStart && selector < 7 ) ){ - console.log( l + ' > ' + xmlList.length + ' tag:' + tagName ); + //console.log( l + ' > ' + xmlList.length + ' tag:' + tagName ); for( ; i < l; ++i ){ xml = parents[ i ]; xml.childNodes && xml.childNodes.length && XMLWrapper_fetchElements( xmlList, xml, isAll ? null : tagName ); }; - console.log( l + ' >> ' + xmlList.length + ' tag:' + tagName ); + //console.log( l + ' >> ' + xmlList.length + ' tag:' + tagName ); }; }; @@ -245,7 +245,7 @@ function XMLWrapper_val( queryString, type ){ // :, 擬似クラス case 4 : if( !( filter = XMLWrapper_filter[ name ] ) ){ - return XMLListWrapper_0;; + return XMLListWrapper_0; }; break; // [] 属性 @@ -267,7 +267,7 @@ function XMLWrapper_val( queryString, type ){ filter = [ 'class', 3, name ]; break; // :, 擬似クラス case 4 : - if( !( filter = X_Node_Selector__filter[ name ] ) ){ + if( !( filter = XMLWrapper_filter[ name ] ) ){ return []; }; break; @@ -442,13 +442,13 @@ function XMLWrapper_val( queryString, type ){ function XMLWrapper_funcSelectorChild( type, flag_all, flags, xmlList ){ var res = [], flag_not = flags.not, - i = 0, n = -1, xnode, node, + i = 0, n = -1, xml, node, tagName, tmp; - for( ; xnode = xmlList[ i ]; ++i ){ - tagName = flag_all || xnode.tagName; + for( ; xml = xmlList[ i ]; ++i ){ + tagName = flag_all || xml.tagName; tmp = null; if( /* tmp === null && */ type <= 0 ){ - for( node = xnode.previousSibling; node; node = node.previousSibling ){ + for( node = xml.previousSibling; node; node = node.previousSibling ){ if( node.nodeType === 1 && ( flag_all || tagName === node.tagName ) ){ tmp = false; break; @@ -456,7 +456,7 @@ function XMLWrapper_val( queryString, type ){ }; }; if( tmp === null && 0 <= type ){ - for( node = xnode.nextSibling; node; node = node.nextSibling ){ + for( node = xml.nextSibling; node; node = node.nextSibling ){ if( node.nodeType === 1 && ( flag_all || tagName === node.tagName ) ){ tmp = false; break; @@ -464,29 +464,32 @@ function XMLWrapper_val( queryString, type ){ }; }; if( tmp === null ) tmp = true; - if( tmp ^ flag_not ) res[ ++n ] = xnode; + if( tmp ^ flag_not ) res[ ++n ] = xml; }; return res; }; function XMLWrapper_funcSelectorNth( pointer, sibling, flag_all, flags, xmlList, a, b ){ - var res = [], + var uids = X_Array_copy( xmlList ), + res = [], checked = {}, flag_not = flags.not, - i = 0, n = -1, uid, - c, xnode, tmp, node, tagName; - for( ; xnode = xmlList[ i ]; ++i ){ - uid = xnode._uid; - tmp = checked[ uid ]; + i = 0, n = -1, + c, xml, tmp, node, tagName, uid; + + for( ; xml = xmlList[ i ]; ++i ){ + tmp = checked[ i ]; if( tmp === undefined ){ - for( c = 0, node = xnode.parentNode[ pointer ], tagName = flag_all || xnode.tagName; node; node = node[ sibling ] ){ + for( c = 0, node = xml.parentNode[ pointer ], tagName = flag_all || xml.tagName; node; node = node[ sibling ] ){ if( node.nodeType === 1 && ( flag_all || tagName === node.tagName ) ){ ++c; - checked[ node._uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0; - }; + uid = uids.indexOf( node ); + if( uid === -1 ) uids[ uid = uids.length ] = node; + checked[ uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0; + }; }; - tmp = checked[ uid ]; + tmp = checked[ i ]; }; - if( tmp ^ flag_not ) res[ ++n ] = xnode; + if( tmp ^ flag_not ) res[ ++n ] = xml; }; return res; }; @@ -494,9 +497,9 @@ function XMLWrapper_val( queryString, type ){ function XMLWrapper_funcSelectorProp( prop, flag, flags, xmlList ){ var res = [], flag_not = flag ? flags.not : !flags.not, - i = 0, n = -1, xnode; - for( ; xnode = xmlList[ i ]; ++i ){ - if( xnode.getAttributeNode( prop ) ^ flag_not ) res[ ++n ] = xnode; + i = 0, n = -1, xml; + for( ; xml = xmlList[ i ]; ++i ){ + if( xml.getAttributeNode( prop ) ^ flag_not ) res[ ++n ] = xml; }; return res; }; */ @@ -536,16 +539,16 @@ var XMLWrapper_filter = { m : function( flags, xmlList ){ var res = [], flag_not = flags.not, - i = 0, n = -1, xnode, tmp, node; - for( ; xnode = xmlList[i]; ++i ){ + i = 0, n = -1, xml, tmp, node; + for( ; xml = xmlList[i]; ++i ){ tmp = true; - for( node = xnode.firstChild; node; node = node.nextSibling ){ + for( node = xml.firstChild; node; node = node.nextSibling ){ if( node.nodeType === 1 || ( node.nodeType === 3 && node.nodeValue ) ){ tmp = false; break; }; }; - if( tmp ^ flag_not ) res[ ++n ] = xnode; + if( tmp ^ flag_not ) res[ ++n ] = xml; }; return res; } @@ -554,20 +557,19 @@ var XMLWrapper_filter = { m : function( flags, xmlList, arg ){ var res = [], flag_not = flags.not, - i = 0, n = -1, xnode, text = ''; + i = 0, n = -1, xml, text = ''; - for( ; xnode = xmlList[ i ]; ++i ){ - switch( xnode.nodeType ){ + for( ; xml = xmlList[ i ]; ++i ){ + switch( xml.nodeType ){ case 1 : - text = xml.nodeType === 1 ? xml.innerText || xml.text || xml.textContent : xml.nodeValue; + text = xml.innerText || xml.text || xml.textContent; break; //case 2 : case 3 : - text = xnode.nodeValue; + text = xml.nodeValue; break; }; - console.log( text + ' ' + arg ); - if ( ( -1 < text.indexOf( arg ) ) ^ flag_not ) res[ ++n ] = xnode; + if ( ( -1 < text.indexOf( arg ) ) ^ flag_not ) res[ ++n ] = xml; }; return res; }