
    f                     0    d Z ddlZddlmZ  G d d      Zy)zxpath utilities    N)etreec                   P    e Zd ZddZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)Xpafsc                    || _         | j                   j                  j                  }| j                   j                  j                  | _        i | _        |D ])  }|j                  d      s||   | j
                  |dd  <   + || _        y )Nxpath_   )eabovo	constants
is_testingis_devN
startswith
do_verbose)selferimpr   r   constants        !/home/ernad/ernad/python/xpafs.py__init__zXpafs.__init__   su    FFLL**	ffll--!H&&x0#,X#6DFF8AB<  " %    c                     	 |j                  || j                        }|S # t        j                  $ r? d| d}| j	                         rt        |      t        |t        j                         Y y w xY w)N
namespaceszxpaths can't evaluate ''file)	xpathr   r   XPathEvalErrorr   	Exceptionprintsysstderr)r   docxpoutsnotes        r   runz	Xpafs.run   sm    	99RDFF93D  ## 	,RD2D{{}o%$SZZ(	s   ! AA32A3c                 \    t        |j                  || j                              }|dk(  ryy)Nr   r   FT)lenr   r   )r   r#   r$   counts       r   has_itzXpafs.has_it%   s*    CIIbTVVI45A:r   c                 P    t        j                  |d      j                         }|S )NT)pretty_print)r   tostringdecode)r   r#   strings      r   txtz	Xpafs.txt+   s     $7>>@r   c                 0   | j                  ||      }|g S |du rg S |du rg S t        |      dk(  rg S t        |      dk(  r|d   S | j                  |      dz   |z   }| j                         rt	        |      t        |t        j                         |d   S )NFTr       must not have several r   r'   r)   r1   r   r   r    r!   r"   r   r#   r$   r%   errs        r   zero_or_onezXpafs.zero_or_one/   s    xxR <I5=I4<It9>It9>7Nhhsm77"<;;=C. c

#Awr   c                 *    | j                  ||      }|S z1should be obsolete, all has a spercial hightlightr'   r   r#   r$   r%   s       r   allz	Xpafs.allA       xxR r   c                 *    | j                  ||      }|S r:   r;   r<   s       r   allez
Xpafs.alleF   r>   r   c                    | j                  ||      }t        |      dk(  ry t        |      dk(  r|d   S | j                  |      dz   |z   }| j                         rt	        |      t        |t        j                         |d   S )Nr   r3   r4   r   r5   r6   s        r   none_or_onezXpafs.none_or_oneL   sv    xxR t9>t9>7Nhhsm77"<;;=C. c

#Awr   c                     | j                  ||      }t        |      dk(  r3| j                  |      dz   |z   }| j                         rt	        |      y |d   S )Nr    must have at least one r'   r)   r1   r   r   r6   s        r   one_or_lastzXpafs.one_or_lastX   sT    xxR t9>((3-"<<rAC{{}n$Bxr   c                     | j                  ||      }t        |      dk(  r3| j                  |      dz   |z   }| j                         rt	        |      y |d   S )Nr   rD   rF   r6   s        r   one_or_firstzXpafs.one_or_firsta   sT    xxR t9>((3-"<<rAC{{}n$Awr   c                    | j                  ||      }t        |      dk(  rW| j                  |      dz   |z   }| j                  j	                         rt        |      t        |t        j                         t        |      dk(  r|d   S | j                  |      dz   |z   }| j                         rt        |      t        |t        j                         |d   S )Nr   z must have r   r3   r4   )
r'   r)   r1   r	   r   r   r    r!   r"   r   r6   s        r   onez	Xpafs.onej   s    xxR t9>((3--/"4Cvv  "n$#CJJ't9>7Nhhsm77"<;;=C. c

#Awr   N)F)__name__
__module____qualname__r   r'   r+   r1   r8   r=   r@   rB   rG   rI   rK    r   r   r   r      s9    	%	$

r   r   )__doc__r!   lxmlr   r   rO   r   r   <module>rR      s      j jr   