
    +gs                     \    d dl Z d dlZ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	 G d d      Z
y)    Nc                       e Zd ZddZddZi fdZd Zd ZddZd Z	dd	Z
d
 Zd ZddZd ZddZddZd Zd Zd Zy)Transc                 <    || _         || _        i | _        d | _        y N)e
do_verbosesheetsbase_doc)selferimpr   s      !/home/ernad/ernad/python/trans.py__init__zTrans.__init__   s!    $    c                    | j                  |      }t        j                  |||g      syt        j                  |      }| j                  ||      }t        |      }|j                  d      }	~~t        j                          |r-t        dd      }
|
j                  |	       |
j                          t        j                  |	      }t        j                  ||       y )NFutf-8z
/tmp/errorw)get_fufifilerdonereetparse
get_resultbytesdecodegccollectopenwriteclosejsonloadsdump)r   shenain_fufiout_fufido_error
sheet_fufiin_docout_doc	out_bytes
out_string
error_filedatas               r   fufi_to_jsonzTrans.fufi_to_json   s    ]]5)
||Hz7&;<'"//%0'N	%%g.



lC0JZ(zz*%

4"r   c                 f   | j                  |      }| j                  j                  d   }t        j                  j                  |      }|j                  dd      d   }| d| d| d}d}	|D ]  }
|	d	|
z   d
z   ||
   z   z  }	 d|	 d
| d
| }|d| d| z  }t        j                  |dd       y);for papers screen transformation because so maxvars in lxmllog.   r   /_.err$--maxvars 1000000 --maxdepth 1000000z --stringparam  /usr/bin/xsltproc  >  2> TcheckshellN)	r   r   dirsospathbasenamesplit
subprocessrun)r   r#   r$   r%   paramsr'   log_dirin_indicerr_fufiargsparamss               r   
via_systemzTrans.via_system*   s    ]]5)
&&++e$77##G,>>#q)!,Yawaz65E%-3fUmCCD  a
|1WI>	s8*D
++qD1r   c                     | j                  ||      }t        |      }|j                  d      }~~t        j                          |S Nr   r   r   r   r   r   r   r#   r(   r)   r*   r+   s         r   doc_to_jsonzTrans.doc_to_json9   s@    //%0'N	%%g.



r   c                     | j                  ||      }t        |      }|j                  d      }~~t        j                          |S )z/same as previous function, but with better namer   rP   rQ   s         r   doc_to_stringzTrans.doc_to_stringC   s@    //%0'N	%%g.



r   Nc                     |t        j                  d      }t        |t              rt        j                  |      }| j                  |||      }t        j                  |       |j                  |d       |S )N<root/>)rF   Tpretty_print)	r   
fromstring
isinstancestrr   r   r   preparer   )r   r#   ingestr%   rF   r)   s         r   ingest_to_fufizTrans.ingest_to_fufiN   sb    >]]9-Ffc"XXf%F//%/?hhT2r   c                     | j                  |      }t        j                  |      }t        j                  |      }|j	                  d       || j
                  |<   |S )Ni@B )r   r   r   XSLTset_global_max_depthr	   )r   r#   r'   	sheet_docsheets        r   
load_sheetzTrans.load_sheetc   sM    ]]5)
HHZ(		"""7+"Er   c                 ,   || j                   vr| j                  |       | j                   |   }|
	  ||      }n	 ||fi |}|j                         t        j                  |       |S # t        j                  $ r | j	                  ||      }Y Nw xY wr   )r	   rd   r   XSLTApplyErrornew_via_systemgetrootcleanup_namespaces)r   r#   r(   rF   rc   results         r   r   zTrans.get_resultk   s    #OOE"E"><v 6,V,F>>'!!&) $$ <,,UF;<s   A+ +%BBc                     | j                   }|j                  j                  d   }| j                   j                  d   dz   |z   |z   }t        j
                  j                  |      st        d|z         |S )Nxslstyler4   zI don't see the file )r   abovoextr?   r@   rA   isfile	Exception)r   r#   r   ro   r'   s        r   r   zTrans.get_fufi}   se    FFggkk% VV[[)C/%7#=
ww~~j)3j@AAr   c                    | j                  |      }t        j                  |||g      syt        j                  |      }|j                         }| j                  ||      }t        j                  |j                         |       |S )NF)r   r   r   r   r   rh   r   install_xml)r   r$   r#   r%   r'   r(   in_eler)   s           r   fufi_to_fufizTrans.fufi_to_fufi   sn    ]]5)
 ||Hz7&;<'"!//%0'//+X6r   c                     | j                  |      }t        j                  |      }| j                  ||      }t	        |      }|j                  d      }|S rO   )r   r   r   r   r   r   )	r   r#   r$   rF   r'   r(   r)   r*   r+   s	            r   fufi_to_stringzTrans.fufi_to_string   sM    ]]5)
'"//%0'N	%%g.
r   c                     t        j                  |      }|j                         }| j                  ||      }t	        j
                  |j                         |       |S )ztranform fufi to itself)r   r   rh   r   r   rs   )r   fufir#   r(   rt   r)   s         r   ry   z
Trans.fufi   sI     $!//%0'//+T2r   c                     | j                  ||      }t        |      }|j                  d      }~~t        j                          t        j                  ||       |S rO   )r   r   r   r   r   r   srite)r   r#   r(   r%   r&   r)   r*   r+   s           r   doc_to_text_fufizTrans.doc_to_text_fufi   sO     //%0'N	%%g.



Hj)r   c                 r    | j                  ||      }t        j                  |j                         |       |S r   )r   r   rs   rh   )r   r#   r(   r%   r&   r)   s         r   doc_to_fufizTrans.doc_to_fufi   s.    //%0'//+X6r   c                 T    t        j                  d      }t        |       || _        |S )NrV   )r   rY   printr
   )r   r
   s     r   create_base_doczTrans.create_base_doc   s#    ==+h r   c                 6   t        j                  |      }|t        d|        t                t        j                  |      }	  || j
                         |S # t         j                  $ r+}t        |       t        |       t                Y d }~|S d }~ww xY w)Nztrans can't parse )r   r   r   quitr`   r
   rf   )r   ry   rb   rc   errors        r   	run_checkzTrans.run_check   s    HHTN	&tf-.F	"	$--      	$K%LFF 	s   A B- BBc                    | j                  |      }dt        t        j                               dd z   }|dz   }|dz   }|j	                  |d       |dz   }d	}d
| d| d| }	|	d| d| z  }		 t        j                  |	dd       	 t        j                  |      }|||fD ]7  }t         j"                  j%                  |      s#t!        j&                  |       9 |S # t
        j                  $ r: t        |d      }
|
j                         }t        |t        j                         Y yw xY w# t        j                  $ r t        |d      }|j                         }Y w xY w)r0   z/tmp/N   zout.xmlzin.xmlTrW   r6   r7   r9   r8   r:   r;   r<   r)file)r   r[   uuiduuid4r   rD   rE   CalledProcessErrorr   readr   sysstderrr   r   XMLSyntaxErrorr@   rA   rp   remove)r   r#   r(   r'   randnar%   r$   rI   rJ   rL   err_fileerrdocout_filery   s                  r   rg   zTrans.new_via_system   sV   ]]5)
3tzz|,Ra00I%8#W40F?5 a
|1WI>	s8*D
++	NN1D5	"((8$C h1Dww~~d#		$ 2 
 ,, 	Hc*H--/C#CJJ'		    	"Hc*H--/C	"s%   0C 	D/ A
D,+D,//E! E!)Fr   )__name__
__module____qualname__r   r.   rM   rR   rT   r^   rd   r   r   ru   rw   ry   r|   r~   r   r   rg    r   r   r   r      s\    #& ;= 2	*$
"r   r   )r   r    r@   
lxml.etreeetreer   rD   r   r   r   r   r   r   r   <module>r      s)    	  	    
 [ [r   