
    hv                     0    S r SSKrSSKJr   " S S5      rg)z,comman function between collection and users    Nc                   T    \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rSrg)Idref   c                 N    Xl         X l        / SQU l        / SQU l        0 U l        g )N)
iseditorof	haseditorispartof)
collectionpersonorganization)e
do_verboseverbsnounsreffed)selferimpr   s      !/home/ernad/ernad/python/idref.py__init__Idref.__init__   s$    $<
=
    c                 H    U R                    H  n0 U R                  U'   M     g )N)r   r   )r   nouns     r   clearIdref.clear   s    JJD "DKK r   c                     [         R                  " U5      R                  nX R                  ;  a  [	        SU 3[
        R                  S9  U$ )Nzidref: no such noun file)etQName	localnamer   printsysstderr)r   eler   s      r   r   
Idref.noun   s=    xx}&&zz!(/zz#r   c                     SU R                   R                  S   -   S-   nUR                  U5      (       d  gUSS  nXR                  ;   a  gg)N{amf}F   T)r   ns
startswithr   )r   string	amf_starts      r   is_verbIdref.is_verb    sM    $&&))E**S0	  ++ZZr   c                     SUR                   ;   a  UR                   S   $ SUR                   ;   a#  UR                   S   R                  S5      S   nU$ g)z>in case of both id and ref, id should really be returned firstrefid/N)attribsplit)r   r%   r3   s      r   handle_from_nounIdref.handle_from_noun*   sO    CJJ::e$$3::**T"((-b1CJr   c                 R    U R                    H  nXR                   U   ;   d  M    g   g)NTF)r   )r   r3   kinds      r   
has_it_refIdref.has_it_ref3   s'    KKDkk$''   r   c                 6   SnUR                  U5      n[        U5      S:X  a)  [        SUR                  -   S-   [        R
                  S9  g [        U5      S:  a(  [        SUR                  -   S-   [        R
                  S9  US   nU R                  U5      nU$ )Nz./*r   zidref: z without nounr      z with several nouns)findalllenr"   tagnamer#   r$   r9   )r   verbxpfound_nounsr   handles         r   handle_from_verbIdref.handle_from_verb9   s    ll2&{q )dll*_<zz#{a)dll*-BBzz#1~&&t,r   c                    SnUR                  U5      n0 nU H/  nUR                  S   R                  S5      S   nXd;  d  M+  SXF'   M1     U R                  U5      nUb  SXG'   [	        U5      S:X  a  gU HR  nSU-   S	-   nUR                  U5       H2  n	U	R                  5       n
U
R                  5       R                  U
5        M4     MT     g)
N	.//*[@id]r4   r5   r6   Tr   Fz.//*[@ref=''])rA   r7   r8   mainidrB   	getparentremove)r   docids_xpid_nounshandlesid_nounrG   rM   rE   r   rD   s              r   clear_refs_when_idIdref.clear_refs_when_idG   s    ;;v&G^^D)//4R8F$"&	   S!"GOw<1F'$.BB~~' ''- (  r   c                    SUR                  5       R                  ;  a  [        S[        R                  S9  g UR                  5       R                  S   R                  S5      S   nSn/ nUR                  U5      nU H<  nUR                  S   R                  S5      S   nXr:X  d  M+  UR                  U5        M>     U H7  nUR                  5       n	U	c  M  U	R                  5       R                  U	5        M9     U$ )Nr4   zthe root element needs in idr   r5   r6   rK   )
getrootr7   r"   r#   r$   r8   rA   appendrN   rO   )
r   rP   rM   rQ   	to_deleterR   rT   rG   r   rD   s
             r   rM   Idref.mainida   s    s{{}+++0zz#%%d+11#6r:	;;v&G^^D)//4R8F  )	  
 D>>#D|NN##D)	 
 r   c                 <   Sn/ nUR                  U5      nU H#  nUR                  S   nUR                  U5        M%     U HW  nSU-   S-   nUR                  U5      SS  nU H2  n	U	R                  5       n
U
R                  5       R	                  U
5        M4     MY     U$ )NrK   r4   z
.//*[@id='rL   r@   )rA   r7   rY   rN   rO   )r   rP   rQ   rZ   rR   rT   amfidrE   r   r   rD   s              r   delete_by_subsequest_idIdref.delete_by_subsequest_idw   s    	;;v&GNN4(EU#   E%,BKKOAB'E~~' ''-   
r   )r   r   r   r   r   N)F)__name__
__module____qualname____firstlineno__r   r   r   r0   r9   r=   rH   rU   rM   r^   __static_attributes__ r   r   r   r      s4    #4,r   r   )__doc__r#   
lxml.etreeetreer   r   re   r   r   <module>ri      s    2 

 { {r   