a
    3'`                     @   sj   d dl Z d dlmZ d dlZd dlZ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)Dexisc                   @   s`   e Zd Zdd ZdddZdd	 ZdddZdd Zdd ZdddZ	dddZ
edd ZdS )Kriktc                 C   s   || _ g | _d S )N)ejunkers)selferimp r   !/home/ernad/ernad/python/krikt.py__init__   s    zKrikt.__init__TFNc                 C   s   | j }|  |j}t|dd}|s:t| }t| |D ]}|durT||krTq>|jd d }	t	j
|	sztd|	 g }
|
|	 || }|
| |jd d | d	 }tj||
|d
sq>|rtd| d|  |jd|| q>dS )z+-> does not donere for the krikt style fufiTreverseNstylez/krikts.xslt.xmlzI don't see krikt/.json.gz)
do_verbosezkrikt runs z to krikts)r   fill_issuesissuessortedlistkeysrandomshuffledirsospathisfile	Exceptionappendfilerdonereprinttfufi_to_json)r   Zdo_newest_firstr   Zdo_only_issuedateZdo_checkr   r   Zissues_to_do	issuedateZ
style_fufiin_fufisin_fufiout_fufir   r   r	   renew   s0    


zKrikt.renewc                 C   sR   t j|}|dd }| jjd d | d }| jjd|| td|  dS )	z$--> run a test a file, for debuggingr   
   r   r   r   r   zkrikt wrote N)r   r   basenamer   r   r#   r$   r"   )r   r'   Zin_banaZin_dater(   r   r   r	   run_file6   s
    zKrikt.run_file
new_to_oldc                 C   s@   | j jd d }t|}|dkr0t| |S t|dd}|S )z-> list of krik filesr   
/*.json.gzr   Tr   r   r   globr   r   r   )r   orderglob_string	out_fufisr   r   r	   r3   B   s    

zKrikt.out_fufisc                 C   s   | j jd d | d }|S )Nr   r   r   )r   r   )r   r%   fufir   r   r	   r4   L   s    z
Krikt.fufic           	      C   s`   | j }|j}d| d }|jj|d}g }|D ]&}t|| }t|}|| q.|| _	d S )Nzstyle/z/junk_krikts.xslt.xml)fina)
r   impnaabovoread_constantsconfde_xmlrecompiler   r   )	r   r   r6   r5   Zregexesr   priorityvalueZjunkerr   r   r	   junk_eatersP   s    
zKrikt.junk_eatersc              
   C   s
  | j }t|}tt|jd }|dd }|| |jdd}t	|}	|j
|	g}
|jd|
}d}|r|t|
 7 }|r||7 }|du r|S zt|}W nL tjj y } z.t|tjd	 t| tjd	 W Y d }~d S d }~0 0 zt|
 }W nN tjyZ } z2t| tjd	 tt|tjd	 W Y d }~d S d }~0 0 |D ]V}|| }|D ]B}|| }|D ].}||d}td
d|}tdd|}qqpq`t| jdkr|   n | jD ]}t|d|}q|d| 7 }|d| 7 }|S )Ndexisr   r*   T)Zwith_nsr    F)filez<([^>]+)></\1>\nz<([^ ]+)[^>]+></\1>\n
) r   r   r   choicer   listdirr   Zset_issuedateet
fromstringxwrap_dorelsr#   doc_to_jsontostringdecodejsonloadsdecoderJSONDecodeErrorr"   sysstderrformatSerialisationErrorstrreplacer;   sublenr   r?   )r   Z	show_rumpZwith_kriktsZ	show_fullr   dZ
dexis_banar%   Zoctetsdoreldocjson_stringoutdataerrZ
xml_stringpapidr   ZfivasZfivaZrexr   r   r	   test_one]   sZ    



zKrikt.test_onec                 C   s@   | j }|jd d }t|}|r0t| |S t|dd}|S )zlist the fufir   r.   Tr   r/   )r   Z	do_randomr   r2   fufisr   r   r	   
list_fufis   s    

zKrikt.list_fufisc                 C   sT   |   } | dd} | dd} | dd} | dd} d|  } | d} | S )N) (,-.)lowerrV   joinsplitrstrip)sr   r   r	   process_field   s    
zKrikt.process_field)TFNF)r-   )TFF)F)__name__
__module____qualname__r
   r)   r,   r3   r4   r?   ra   rc   staticmethodro   r   r   r   r	   r      s     


  
8
r   )r   
lxml.etreeetreerF   r0   rM   r   r;   rQ   r9   r    r@   r   r   r   r   r   r	   <module>   s   