
    3'`                     p    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      Zy)    N)Dexisc                   \    e Zd Zd Z	 	 ddZd ZddZd Zd Z	 	 ddZ	dd	Z
ed
        Zy)Kriktc                      || _         g | _        y )N)ejunkers)selferimps     !/home/ernad/ernad/python/krikt.py__init__zKrikt.__init__   s        Nc                 ~   | j                   }|j                          |j                  }t        |d      }|s.t	        |j                               }t        j                  |       |D ]  }|||k7  r|j                  d   dz   }	t        j                  j                  |	      st        d|	z         g }
|
j                  |	       ||   }|
j                  |       |j                  d   dz   |z   d	z   }t        j                  ||
|
      s|rt!        d| d|        |j"                  j%                  d||        y)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	   do_newest_firstr   do_only_issuedatedo_checkr   r   issues_to_do	issuedate
style_fufiin_fufisin_fufiout_fufis                r   renewzKrikt.renew   s"    FF	fd3.LNN<(% 	:I , 11+==J77>>*- ;<<HOOJ'Y'GOOG$vvg,y8:EH<<(zJG9D
;<CCXw9#	:r   c                     t         j                  j                  |      }|dd }| j                  j                  d   dz   |z   dz   }| j                  j
                  j                  d||       t        d|z          y)	z$--> run a test a file, for debuggingr   
   r   r   r   r   zkrikt wrote N)r   r    basenamer   r   r'   r(   r&   )r	   r0   in_banain_dater1   s        r   run_filezKrikt.run_file6   sk     ''""7+!B-66;;w'#-7*Dh:nx'(r   c                     | j                   j                  d   dz   }t        j                  |      }|dk(  rt        j                  |       |S t        |d      }|S )z-> list of krik filesr   
/*.json.gzr   Tr   r   r   globr   r   r   )r	   orderglob_string	out_fufiss       r   r?   zKrikt.out_fufisB   sS    ffkk'*\9IIk*	HNN9%9d3	r   c                 J    | j                   j                  d   dz   |z   dz   }|S )Nr   r   r   )r   r   )r	   r-   fufis      r   rA   z
Krikt.fufiL   s(    vv{{7#c)I5
Br   c                    | j                   }|j                  }d|z   dz   }|j                  j                  |      }g }|D ]@  }t	        j
                  ||         }t        j                  |      }|j                  |       B || _	        y )Nzstyle/z/junk_krikts.xslt.xml)fina)
r   impnaabovoread_constantsconfde_xmlrecompiler#   r   )	r	   r   rD   rC   regexesr   priorityvaluejunkers	            r   junk_eaterszKrikt.junk_eatersP   s    FF%"99''((d(3 	#HKK 12EZZ&FNN6"		#
 r   c                    | j                   }t        |      }t        j                  t	        j
                  |j                  d               }|dd }|j                  |       |j                  d      }t        j                  |      }	|j                  j                  |	g      }
|j                  j                  d|
      }d}|r&|t        j                  |
      j                         z  }|r||z  }|du r|S 	 t!        j"                  |      }	 t        j                  |
      j                         }|D ]Z  }||   }|D ]N  }||   }|D ]B  }|j5                  |d      }t7        j8                  d
d|      }t7        j8                  dd|      }D P \ t;        | j<                        dk(  r| j?                          n	 | j<                  D ]  }t7        j8                  |d|      } |dz   z  }|d|z   z  }|S # t         j$                  j&                  $ rN}t)        |t*        j,                  	       t)        |j/                         t*        j,                  	       Y d }~y d }~ww xY w# t        j0                  $ rW}t)        |j                         t*        j,                  	       t)        t3        |      t*        j,                  	       Y d }~y d }~ww xY w)Ndexisr   r4   T)with_nsr    F)filez<([^>]+)></\1>\nz<([^ ]+)[^>]+></\1>\n
) r   r   r   choicer   listdirr   set_issuedateet
fromstringxwrap_dorelsr'   doc_to_jsontostringdecodejsonloadsdecoderJSONDecodeErrorr&   sysstderrformatSerialisationErrorstrreplacerI   sublenr   rO   )r	   	show_rumpwith_krikts	show_fullr   d
dexis_banar-   octetsdoreldocjson_stringoutdataerr
xml_stringpapidr   fivasfivarexs                        r   test_onezKrikt.test_one]   si   FF!H]]2::affWo#>?
q$	 	
	"$'f%ccooug&ccooh42;;s#**,,C;CJ	::k*D
	S)002J
  
	4E;D 4U! 4D!+!3!3D"!=J!#(;R!LJ!#(@"(2"4J	44
	4 t||!<< 	5CR4J	5 	dUl"
tj  
A ||++ 	+CJJ/#**,SZZ0	 $$ 	&--/

3#c(,	s2   :G6 #I$ 6I!AII!$K7AK		Kc                     | j                   }|j                  d   dz   }t        j                  |      }|rt        j                  |       |S t        |d      }|S )zlist the fufir   r:   Tr   r;   )r	   	do_randomr   r>   fufiss        r   
list_fufiszKrikt.list_fufis   sP    FFffWo4		+&NN5!Lud+r   c                    | j                         } | j                  dd      } | j                  dd      } | j                  dd      } | j                  dd      } dj                  | j                               } | j	                  d      } | S )N) (,-.)lowerri   joinsplitrstrip)ss    r   process_fieldzKrikt.process_field   ss    GGIIIc3IIc3IIc3IIc3HHQWWYHHSMr   )TFNF)
new_to_old)TFF)F)__name__
__module____qualname__r   r2   r8   r?   rA   rO   r}   r   staticmethodr    r   r   r   r      sO    
 6;/4:<
) 49 6p	 
 
r   r   )r   
lxml.etreeetreerY   r<   r`   r   rI   rd   rG   r$   rQ   r   r   r   r   r   <module>r      s1    
     	 
   Z Zr   