// TODO { a : 1, A : 2, _ : 3,,, }\r
X_Node_Selector__ALPHABET = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-0123456789\\',\r
X_Node_Selector__NUMBER = '+-0123456789';\r
- \r
+\r
+// XMLWrapper のために今だけ外部に公開\r
+X_NodeSelector_parse = X_Node_Selector__parse;\r
+ \r
/*\r
* セレクタ文字列の解析、但し一挙に行わず、ひと塊づつ\r
* 結合子 + 単体セレクタ( タグ,*,#,.,[],: )\r
break;\r
default :\r
};\r
+ \r
+ if( phase === 0xf ) return i;\r
+ \r
//alert( chr + ' ' + phase + ' ' + selector + ' ' + name + ' ' + name1st )\r
if( phase === 0xe ){\r
if( selector === 4 ){// :not\r
if( name === 'not' ){\r
- if( not ) return i; // error\r
- not = true;\r
- selector = 0;\r
- phase = 0x0;\r
- name = null;\r
- continue;\r
+ if( not ){\r
+ return i; // error\r
+ } else {\r
+ not = true;\r
+ selector = 0;\r
+ phase = 0x0;\r
+ name = null; \r
+ };\r
+ //continue;\r
} else\r
if( name === 'lang' || name === 'contains' ){\r
result = [ not ? 0 : combinator, selector, name, value ];\r
result = [ not ? 0 : combinator, selector, name, a, b ];\r
break; \r
};\r
+ } else {\r
+ result =\r
+ combinator === 5 ?\r
+ 5 :\r
+ selector === 5 ?\r
+ [ not ? 0 : combinator, selector, key, operator, value ] :\r
+ [ not ? 0 : combinator, selector, name.split( '\\' ).join( '' ) ];\r
+ break; \r
};\r
- result =\r
- combinator === 5 ?\r
- 5 :\r
- selector === 5 ?\r
- [ not ? 0 : combinator, selector, key, operator, value ] :\r
- [ not ? 0 : combinator, selector, name.split( '\\' ).join( '' ) ];\r
- break;\r
- } else\r
- if( phase === 0xf ) return i;\r
+ };\r
\r
escape = chr === '\\' && !escape;\r
};\r
links, className, attr, flag;\r
\r
/*@+debug[*/\r
- if( X_ViewPort_readyState < X.Event.XDOM_READY ){\r
- alert( 'not ready! use X.ViewPort.listenOnce( X.Event.XDOM_READY, callback )' );\r
+ if( X_ViewPort_readyState < X_Event.XDOM_READY ){\r
+ alert( 'not ready! use X.ViewPort.listenOnce( X_Event.XDOM_READY, callback )' );\r
return;\r
};\r
/*]@+debug*/\r
// > TagName|*\r
case 2 :\r
for( ; i < l; ++i ){\r
- for( xnode = parents[ i ].firstChild(); xnode; xnode = xnode.nextNode() ){\r
- if( xnode._xnodeType === 1 && ( isAll || tagName === xnode._tag ) ) xnodes[ ++n ] = xnode;\r
+ for( xnode = parents[ i ].firstChild(); xnode; xnode = xnode.next() ){\r
+ if( xnode._tag && ( isAll || tagName === xnode._tag ) ) xnodes[ ++n ] = xnode;\r
}; \r
};\r
break;\r
// + TagName|*\r
case 3 :\r
for( ; i < l; ++i ){\r
- for( xnode = parents[ i ].nextNode(); xnode; xnode = xnode.nextNode() ){\r
- if( xnode._xnodeType === 1 ){\r
+ for( xnode = parents[ i ].next(); xnode; xnode = xnode.next() ){\r
+ if( xnode._tag ){\r
if( isAll || tagName === xnode._tag ) xnodes[ ++n ] = xnode;\r
break;\r
}; \r
case 4 :\r
merge = {};\r
for( ; i < l; ++i ){\r
- for( xnode = parents[ i ].nextNode(); xnode; xnode = xnode.nextNode() ){\r
- if( xnode._xnodeType === 1 && ( isAll || tagName === xnode._tag ) ){\r
+ for( xnode = parents[ i ].next(); xnode; xnode = xnode.next() ){\r
+ if( xnode._tag && ( isAll || tagName === xnode._tag ) ){\r
uid = xnode._uid;\r
if( merge[ uid ] ){\r
break;\r
// 諦めて、funcAttrを呼ぶ\r
// flag_call = ($.browser.safari && key === 'selected');\r
// getAttributeを使わない\r
- useName = X_UA.IE && key !== 'href' && key !== 'src';\r
+ useName = X_UA[ 'IE' ] && key !== 'href' && key !== 'src';\r
toLower = !!val && !isXML && noLower.indexOf( key ) === -1; //!noLower.test(key);\r
if( toLower ) val = val.toLowerCase();\r
if( op === 3 ) val = _ + val + _;\r
j, child, _xnodes;\r
for( ; i < l; ++i ){\r
child = xnodes[ i ];\r
- if( child._xnodeType !== 1 ) continue;\r
+ if( !child._tag ) continue;\r
//console.log( child._tag );\r
if( ( j = list.indexOf( child ) ) !== -1 ){\r
newList[ newList.length ] = child;\r
child;\r
for( ; i < l; ++i ){\r
child = xnodes[ i ];\r
- if( child._xnodeType === 1 ){\r
+ if( child._tag ){\r
( !tag || child._tag === tag ) && ( list[ list.length ] = child );\r
//console.log( parent._tag + ' > ' + child._tag + ' == ' + tag+ ' l:' + list.length );\r
child._xnodes && child._xnodes.length && X_Node_Selector__fetchElements( list, child, tag );\r
tagName = flag_all || xnode._tag;\r
tmp = null;\r
if( /* tmp === null && */ type <= 0 ){\r
- for( node = xnode.prevNode(); node; node = node.prevNode() ){\r
- if( node._xnodeType === 1 && ( flag_all || tagName === node._tag ) ){\r
+ for( node = xnode.prev(); node; node = node.prev() ){\r
+ if( node._tag && ( flag_all || tagName === node._tag ) ){\r
tmp = false;\r
break;\r
};\r
};\r
};\r
if( tmp === null && 0 <= type ){\r
- for( node = xnode.nextNode(); node; node = node.nextNode() ){\r
- if( node._xnodeType === 1 && ( flag_all || tagName === node._tag ) ){\r
+ for( node = xnode.next(); node; node = node.next() ){\r
+ if( node._tag && ( flag_all || tagName === node._tag ) ){\r
tmp = false;\r
break;\r
}; \r
tmp = checked[ uid ];\r
if( tmp === void 0 ){\r
for( c = 0, node = xnode.parent[ pointer ](), tagName = flag_all || xnode._tag; node; node = node[ sibling ]() ){\r
- if( node._xnodeType === 1 && ( flag_all || tagName === node._tag ) ){\r
+ if( node._tag && ( flag_all || tagName === node._tag ) ){\r
++c;\r
checked[ node._uid ] = a === 0 ? c === b : (c - b) % a === 0 && (c - b) / a >= 0;\r
}; \r
m : function( flags, xnodes ){ return X_Node_Selector__funcSelectorChild( 0, false, flags, xnodes ); }\r
},\r
'nth-child' : {\r
- m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'firstChild', 'nextNode', true, flags, xnodes, a, b ); }\r
+ m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'firstChild', 'next', true, flags, xnodes, a, b ); }\r
},\r
'nth-last-child' : {\r
- m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'lastChild', 'prevNode', true, flags, xnodes, a, b ); }\r
+ m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'lastChild', 'prev', true, flags, xnodes, a, b ); }\r
},\r
'nth-of-type' : {\r
- m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'firstChild', 'nextNode', false, flags, xnodes, a, b ); }\r
+ m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'firstChild', 'next', false, flags, xnodes, a, b ); }\r
},\r
'nth-last-of-type' : {\r
- m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'lastChild', 'prevNode', false, flags, xnodes, a, b ); }\r
+ m : function( flags, xnodes, a, b ){ return X_Node_Selector__funcSelectorNth( 'lastChild', 'prev', false, flags, xnodes, a, b ); }\r
},\r
empty : {\r
m : function( flags, xnodes ){\r
for( ; xnode = xnodes[i]; ++i ){\r
tmp = true;\r
for( node = xnode.firstChild(); node; node = node.nextSibling() ){\r
- if( node._xnodeType === 1 || ( node._xnodeType === 3 && node._text ) ){\r
+ if( node._tag || ( !node._tag && node._text ) ){\r
tmp = false;\r
break;\r
}; \r