Ϫf$dZddlmZGddeZGddZGddZGd d ZGd d Zd Z GddZ GddZ GddZ GddZ GddZiZdZdZdZdZdZy)z XPath query support. This module provides L{XPathQuery} to match L{domish.Element} instances against XPath-like expressions. )StringIOceZdZdZy) LiteralValuec|SNselfelems :/usr/lib/python3/dist-packages/twisted/words/xish/xpath.pyvaluezLiteralValue.values N)__name__ __module__ __qualname__r rrr rrsrrceZdZdZdZy) IndexValuec*t|dz |_y)N)intindex)r rs r __init__zIndexValue.__init__sZ!^ rc4|j|jSr)childrenrr s r r zIndexValue.values}}TZZ((rN)rrrrr rrr rrs $)rrceZdZdZdZdZy) AttribValuecT||_|jdk(r|j|_yy)Nxmlns) attribnamevalue_nsr )r rs r rzAttribValue.__init__ s%$ ??g %DJ &rc|jSr)urir s r r zAttribValue.value_ns%s xxrcf|j|jvr|j|jSyr)r attributesr s r r zAttribValue.value(s( ??doo -??4??3 3rN)rrrrr r rrr rrs' rrceZdZdZdZdZy) CompareValuecp||_||_|dk(r|j|_y|j|_y)N=)lhsrhs _compareEqualr _compareNotEqualr r)opr*s r rzCompareValue.__init__0s1 9++DJ..DJrcp|jj||jj|k(Srr)r r*r s r r+zCompareValue._compareEqual8'xx~~d#txx~~d';;;rcp|jj||jj|k7Srr0r s r r,zCompareValue._compareNotEqual;r1rN)rrrrr+r,rrr r&r&/s/<>''---rN)rrrrrIr rrr rCrCls#.rrCceZdZdZdZy)_text_FunctioncyrrrGs r rIz_text_Function.setParamsxs rct|Sr)strr s r r z_text_Function.value{s 4yrN)rrrrIr rrr rLrLws  rrLc0eZdZdZdZdZdZdZdZy) _Locationc.g|_d|_d|_yr predicates elementName childLocationrGs r rz_Location.__init__!rc|jdk7r|j|jk7ry|jD]}|j|ryyNrr)rUnamerTr r r ps r matchesPredicatesz_Location.matchesPredicatessJ   t #(8(8DII(E A774= rc|j|sy|jdk7r3|jD]}|jj|syyyrY)r]rVelementsmatchesr r r@s r r`z_Location.matchessW%%d+    %]]_ %%--a0  rc|j|sy|jdk7r2|jD]}|jj|| y|j t |yr)r]rVr_queryForStringwriterO)r r resultbufr@s r rcz_Location.queryForStrings`%%d+     %]]_ @""11!Y? @ OOCI &rc|j|sy|jdk7r2|jD]}|jj|| y|j |yr)r]rVr_ queryForNodesappendr r resultlistr@s r rgz_Location.queryForNodess^%%d+     %]]_ @""00J? @   d #rc|j|sy|jdk7r2|jD]}|jj|| y|jD]$}t |t s|j|&yr)r]rVr_queryForStringListr isinstancerOrhris r rlz_Location.queryForStringLists{%%d+     %]]_ E""55aD E]] )a%%%a( )rN) rrrrr]r`rcrgrlrrr rQrQs "  '$ )rrQcBeZdZdZdZdZdZdZdZdZ dZ d Z y ) _AnyLocationc.g|_d|_d|_yrrSrGs r rz_AnyLocation.__init__rWrcL|jD]}|j|ryyrY)rTr r[s r r]z_AnyLocation.matchesPredicatess( A774= rc|jdk7r|j|j||j|jyr)parent listParentsrhrZ)r r parentlists r rtz_AnyLocation.listParentss4 ;;$    T[[* 5$))$rc|jdk(s|j|jk(rT|j|rC|jdk7r3|j D]}|jj |syyyyNTFrUrZr]rVr_r`ras r isRootMatchz_AnyLocation.isRootMatchsv    $(8(8DII(E$$T*!!T)$A))11!4#$ rcV|jdk(s|j|jk(rW|j|rF|jdk7r5|j D]!}|jj |s|cSy|S|j D]}|j |s|cSyrrxras r findFirstRootMatchz_AnyLocation.findFirstRootMatchs    $(8(8DII(E$$T* !!T)!A))11!4 ! ]]_ <<?H rcx|j|ry|jD]}|j|syyrw)ryr_r`ras r r`z_AnyLocation.matchess=   D ! ]]_ <<? rctd)Nz2queryForString is not implemented for any location)NotImplementedError)r r res r rcz_AnyLocation.queryForStrings!"VWWrc|j|r|j||jD]}|j||yr)ryrhr_rgris r rgz_AnyLocation.queryForNodessE   D !   d # .A   q* - .rc|j|r3|jD]$}t|ts|j |&|j D]}|j ||yr)ryrrmrOrhr_rlris r rlz_AnyLocation.queryForStringList sb   D !]] )a%%%a( ) 3A  # #Az 2 3rN) rrrrr]rtryr{r`rcrgrlrrr roros0"  % 4 X.3rroc0eZdZdZdZdZdZdZdZy) XPathQuerycj||_ddlm}m}|||}t |d|_y)Nr) XPathParserXPathParserScannerXPATH)queryStrtwisted.words.xish.xpathparserrrgetattr baseLocation)r rrrparsers r rzXPathQuery.__init__s0  R/9:4GFG46rc6|jjSr)r__hash__rGs r rzXPathQuery.__hash__s}}%%''rc8|jj|Sr)rr`r s r r`zXPathQuery.matches"s  ((..rcnt}|jj|||jSr)rrrcgetvaluer r results r rczXPathQuery.queryForString%s, ((v6  rc`g}|jj||t|dk(ry|SNr)rrglenrs r rgzXPathQuery.queryForNodes*s1 ''f5 v;! Mrc`g}|jj||t|dk(ry|Sr)rrlrrs r rlzXPathQuery.queryForStringList2s1 ,,T6: v;! MrN) rrrrrr`rcrgrlrrr rrs 7(/! rrcH|tvrt|t|<t|Sr)__internedQueriesr) queryStrings r internQueryr>s&++)3K)@+& [ ))rc6t|j|Sr)rr`xpathstrr s r r`r`Ds x ( ( ..rc6t|j|Sr)rrlrs r rlrlHs x 3 3D 99rc6t|j|Sr)rrcrs r rcrcLs x / / 55rc6t|j|Sr)rrgrs r rgrgPs x . .t 44rN)r;iorrOrrrr&r4rArCrLrQrorrrr`rlrcrgrrr rs 3 ))   < < !<!