
    Pd                     L    d dl Z d dlZd dlZd dlZd dlZd dlmZ  G d d      Zy)    N)Nafrac                   P    e Zd Zd Zd ZddZddZd ZddZd Z	ddZ
d	 Zd
 Zy)Natlic                     || _         t        | j                         | _        i | _        i | _        d| j                  d<   d| j                  d<   t        | j                  d         | _        | j                  | j                               | _	        y )Nz.natli.json.gznatliz.tofde.json.gztofde)
er   nafratofrasextlenlen_ext	signaturefufisig)selferimps     !/home/ernad/ernad/python/natli.py__init__zNatli.__init__   sp    466]
,,488G,->>$))+.    c                 P    | j                         }t        j                  |      }|S )N)r   filerload)r   r   ds      r   getz	Natli.get&   s     yy{JJtr   c                 4   i }d}d}| j                   D ]  }|dz  }|j                         }t        |      dk  r"t        d|z   dz   t        j
                         H|| j                   |   z  }|d   }||vri ||<   |d   }	|	||   vrg ||   |	<   d }
t        |      dkD  rdj                  |dd        }
||   |	   j                  |
        || _        |r5t        t        |      dz          t        t        |      d	z          || _
        || _        || _
        |S )
Nr         znatli skips the invalid frase ''file z phrasez phrase occurences)r   splitr   printsysstderrjoinappenddetstrcount_frasescount_words)r   frases
do_verboser)   r+   r,   frasewordsfirstseconrests              r   build_tof_detectorzNatli.build_tof_detector-   s9   [[EALKKME5zA~7%?#E::' 4;;u--K!HECE
!HECJ&$&E
5!D5zA~xxab	*Ju$$T*) !. #l#i/0#k"%99: ,D&(
r   c                    t        | j                        dk(  r| j                  ||       | j                  | j                  |       t	        j
                  | j                        }t	        j
                  | j                        }| j                  }| d| d| | _	        | j                  d| j                         | j                  d| j                         y)z,-> write the t detertor, called by bin/natlir   )r.   	max_filesr.   _r   r   N)r   r   	compose_tr4   tinnusmaker+   r,   max_issuedater   	write_libr)   )r   r.   r6   r+   r,   	issuedates         r   write_tof_detectorzNatli.write_tof_detectorQ   s    t{{q NNjINF
C{{4#4#45kk$"2"23&&	[,q>w)w,r   c                 $   | j                   |   }| j                  j                  d   }|dz   dz   |z   }t        j                  |      D ]  }t	        j
                  |        | j                   | }|dz   |z   }t        j                  ||       y )Nfitli/*)	r   r	   dirsglobosremover   r   dump)r   namewhatr   fudiglob_stringr   finas           r   r=   zNatli.write_lib`   s    hhtnvv{{7#Sj3&,IIk*DIIdO +((C5!czD 

4r   c                 b   | j                   }|j                  j                  |j                  d   d| j                  d   z         }|@|r+t        dt        j                         | j                          | j                  |d       |rt        d	|z          | j                  |      | _        |S )
z-> gives the last fufirA   rC   r   )searchz#natli has no tofde in the fitli dirr    T)r.   do_warnzThe natli is )r	   r   last_by_mtimerD   r   r$   r%   r&   r?   r   r   r   )r   r.   rP   r	   r   s        r   r   z
Natli.fufij   s    FFss  !%'!2:3  4< ;::''')IITI:/D()>>$'r   c                     |yt         j                  j                  |      }|dd  }| j                  }|d|  }|| _        |S )N 
   r   )rF   pathbasenamer   r   )r   r   r   r   s       r   r   zNatli.signature|   sK    <ggt$"#h,,!WHo
r   c                 R   | j                   j                         }d| _        d}|D ]  }|rt        d|z          t        j
                  j                  |      }|dd }|| j                  kD  r|| _        |rt        d|z          | j                  |       |dz  }|dkD  sy||k\  s y y)zfor the topics onlyrS   r   zcompose_t reads rT   znatli loads r   N)r
   	out_fufisr<   r$   rF   rU   rV   read_tof_fufi)r   r.   r6   fufiscount_filesr   banar>   s           r   r9   zNatli.compose_t   s    

$$&D(4/077##D)DQr
I4---%."nt+,t$1K1}	!9 r   c                 ^   t        | j                        dk(  r| j                  |       d}d}| j                  D ]  }|dz  }|| j                  |   z  } t        j                  |      }t        j                  |      }| j
                  }| j                  }| j                  j                  d   }|dz   dz   |z   }t        j                  |      D ]  }	t        j                  |	        | d| d| | }
|dz   |
z   }	t        j                  |	| j                         t        d|	z          y	)
z-> write the t fases NOT USEDr   r7   r   rA   rB   rC   r8   zI wrote N)r   r   r9   r:   r;   r<   r   r	   rD   rE   rF   rG   r   rH   r$   )r   r.   
count_keyscount_timesfitr>   r   rK   rL   r   rM   s              r   write_tof_fraseszNatli.write_tof_frases   s   t{{q NNjN1
;;C!OJ4;;s++K  [[,
kk+.&&	hhvv{{7#Sj3&,IIk*DIIdO +Aj\;-u=czD 

4%j4 r   c                     t        j                  |      }|D ]T  }d||   vr||   d   }|D ]=  }|| j                  vr||   | j                  |<   $| j                  |xx   ||   z  cc<   ? V |S )Nt)r   r   r   )r   r   datapapidt_datar`   s         r   rY   zNatli.read_tof_fufi   s    zz$E$u+%%[%Fdkk)'-c{DKK$C F3K/ 	 	  r   N)F)Fr   )FF)__name__
__module____qualname__r   r   r4   r?   r=   r   r   r9   ra   rY    r   r   r   r      s5    "H-$&!,r   r   )rE   rF   r%   r   r:   r
   r   r   rj   r   r   <module>rk      s%     	 
   d dr   