o
    V`5                     @   sF   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 dZdS )    N)Nafrac                   @   sd   e Zd Zdd Zdd ZdddZdd	d
Zdd ZdddZdd Z	dddZ
dd Zdd ZdS )Natlic                 C   sV   || _ t| j | _i | _i | _d| jd< d| jd< t| jd | _| |  | _	d S )Nz.natli.json.gznatliz.tofde.json.gztofde)
er   nafratofrasextlenlen_ext	signaturefufisig)selferimp r   !/home/ernad/ernad/python/natli.py__init__   s   

zNatli.__init__c                 C   s   |   }t|}|S )N)r   filerload)r   r   dr   r   r   get&   s   
z	Natli.getFc                 C   s  i }d}d}| j D ]Y}|d7 }| }t|dk r%td| d tjd q	|| j | 7 }|d }||vr8i ||< |d }	|	|| vrHg || |	< d }
t|dkrYd|dd  }
|| |	 |
 q	|| _|r{tt	|d  tt	|d	  || _
|| _|| _
|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   Zfrases
do_verboser$   r&   r'   ZfrasewordsfirstZseconrestr   r   r   build_tof_detector-   s<   
zNatli.build_tof_detectorr   c                 C   s   t | jdkr| j||d | j| j|d t| j}t| j}| j}| d| d| | _	| 
d| j | 
d| j dS )z,-> write the t detertor, called by bin/natlir   )r(   	max_filesr(   _r   r   N)r
   r   	compose_tr,   tinnusmaker&   r'   max_issuedater   	write_libr$   )r   r(   r-   r&   r'   	issuedater   r   r   write_tof_detectorQ   s   zNatli.write_tof_detectorc                 C   sj   | j | }| jjd }|d d | }t|D ]}t| q| j | }|d | }t|| d S )Nfitli/*)	r	   r   dirsglobosremover   r   dump)r   namewhatr	   fudiglob_stringr   finar   r   r   r4   `   s   
zNatli.write_libc                 C   sp   | j }|jj|jd d| jd  d}|du r(tdtjd |   | j	|d |r0td	|  | 
|| _|S )
z-> gives the last fufir7   r9   r   )searchNz#natli has no tofde in the fitli dirr   r.   zThe natli is )r   r   last_by_mtimer:   r	   r   r    r!   r6   r   r   r   )r   r(   r   r   r   r   r   r   j   s   z
Natli.fufic                 C   sB   |d u rdS t j|}|dd  }| j}|d|  }|| _|S )N 
   r   )r<   pathbasenamer   r   )r   r   r   r   r   r   r   r   y   s   zNatli.signaturec                 C   s   | j  }d| _d}|D ]:}|rtd|  tj|}|dd }|| jkr*|| _|r2td|  | | |d7 }|dkrF||krF dS qdS )zfor the topics onlyrF   r   zcompose_t reads rG   znatli loads r   N)r   	out_fufisr3   r   r<   rH   rI   read_tof_fufi)r   r(   r-   fufisZcount_filesr   banar5   r   r   r   r0      s$   


zNatli.compose_tc                 C   s   t | jdkr| j|d d}d}| jD ]}|d7 }|| j| 7 }qt|}t|}| j}| j}| jjd }|d d | }t		|D ]}	t
|	 qE| d| d| | }
|d |
 }	t|	| j td|	  d	S )
z-> write the t fases NOT USEDr   r.   r   r7   r8   r9   r/   zI wrote N)r
   r   r0   r1   r2   r3   r	   r   r:   r;   r<   r=   r   r>   r   )r   r(   Z
count_keysZcount_timesfitr5   r	   rA   rB   r   rC   r   r   r   write_tof_frases   s&   


zNatli.write_tof_frasesc                 C   sl   t |}|D ],}d|| vrq|| d }|D ]}|| jvr'|| | j|< q| j|  || 7  < qq|S )Nt)r   r   r   )r   r   datapapidt_datarN   r   r   r   rK      s   

zNatli.read_tof_fufiN)F)Fr   )__name__
__module____qualname__r   r   r,   r6   r4   r   r   r0   rO   rK   r   r   r   r   r      s    

$



r   )r;   r<   r    r   r1   r   r   r   r   r   r   r   <module>   s   