
    Ff                     d    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
dS )    Nc                       e Zd ZddZddZi f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dS )TransFc                 >    || _         || _        i | _        d | _        d S N)e
do_verbosesheetsbase_doc)selferimpr   s      !/home/ernad/ernad/python/trans.py__init__zTrans.__init__   s#    $t    c                    |                      |          }t          j        |||g          sdS t          j        |          }|                     ||          }t          |          }|                    d          }	~~t          j	                     |r9t          dd          }
|
                    |	           |
                                 t          j        |	          }t          j        ||           d S )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&;<< 	5'""//%00'NN	%%g..


 	lC00JZ(((z*%%
4"""""r   c                 p   |                      |          }| j        j        d         }t          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           dS );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$7##G,,>>#q))!,66666665 	D 	DE%-3fUmCCDD>>>
>>W>>	+8+++++qD111111r   c                     |                      ||          }t          |          }|                    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   sJ    //%00'NN	%%g..


r   Nc                 
   |t          j        d          }t          |t                    rt          j        |          }|                     |||          }t          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_fufiC   sy    >]9--Ffc"" 	&Xf%%F//%/??hhT222r   c                     |                      |          }t          j        |          }t          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_sheetX   sV    ]]5))
HZ((		""""7+++"Er   c                 2   || j         vr|                     |           | j         |         }|8	  ||          }n4# t          j        $ r |                     ||          }Y nw xY w ||fi |}|                                t          j        |           |S r   )r	   r`   r   XSLTApplyErrornew_via_systemgetrootcleanup_namespaces)r   r#   r(   rF   r_   results         r   r   zTrans.get_result`   s    ##OOE"""E"><v$ < < <,,UF;;<
 U6,,V,,F>>'!&)))s   ; %A#"A#c                     | j         }|j        j        d         }| j         j        d         dz   |z   |z   }t          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   rk   r'   s        r   r   zTrans.get_fufir   se    Fgk% V[)C/%7#=
w~~j)) 	B3j@AAAr   c                 ,   |                      |          }t          j        |||g          sdS t          j        |          }|                                }|                     ||          }t          j        |                                |           |S )NF)r   r   r   r   r   rd   r   install_xml)r   r$   r#   r%   r'   r(   in_eler)   s           r   fufi_to_fufizTrans.fufi_to_fufiz   s    ]]5))
 |Hz7&;<< 	5'""!!//%00'//++X666r   c                     |                      |          }t          j        |          }|                     ||          }t	          |          }|                    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   sY    ]]5))
'""//%00'NN	%%g..
r   c                     t          j        |          }|                                }|                     ||          }t	          j        |                                |           |S )ztranform fufi to itself)r   r   rd   r   r   ro   )r   fufir#   r(   rp   r)   s         r   ru   z
Trans.fufi   sU     $!!//%00'//++T222r   c                     |                      ||          }t          |          }|                    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   s]     //%00'NN	%%g..


Hj)))r   c                     |                      ||          }t          j        |                                |           |S r   )r   r   ro   rd   )r   r#   r(   r%   r&   r)   s         r   doc_to_fufizTrans.doc_to_fufi   s7    //%00'//++X666r   c                 Z    t          j        d          }t          |           || _        |S )NrR   )r   rU   printr
   )r   r
   s     r   create_base_doczTrans.create_base_doc   s(    =++h r   c                 N   t          j        |          }| t          d|            t                       t          j        |          }	  || j                   nH# t           j        $ r6}t          |           t          |           t                       Y d }~nd }~ww xY w|S )Nztrans can't parse )r   r   r|   quitr\   r
   rb   )r   ru   r^   r_   errors        r   	run_checkzTrans.run_check   s    HTNN	-t--...FFF	""	E$-      	 	 	$KKK%LLLFFFFFFFF	 s   A B",,BB"c                    |                      |          }dt          t          j                              dd         z   }|dz   }|dz   }|                    |d           |dz   }d	}d
| d| d| }	|	d| d| z  }		 t          j        |	dd           nU# t
          j        $ rC t          |d          }
|
	                                }t          |t          j                   Y dS w xY w	 t          j        |          }n9# t          j        $ r' t          |d          }|	                                }Y nw xY w|||fD ]5}t           j                            |          rt!          j        |           6|S )r0   z/tmp/N   zout.xmlzin.xmlTrS   r6   r7   r9   r8   r:   r;   r<   r)file)r   rW   uuiduuid4r   rD   rE   CalledProcessErrorr   readr|   sysstderrr   r   XMLSyntaxErrorr@   rA   rl   remove)r   r#   r(   r'   randnar%   r$   rI   rJ   rL   err_fileerrdocout_fileru   s                  r   rc   zTrans.new_via_system   s   ]]5))
3tz||,,RaR00I%8#W4000F?5>>>
>>W>>	+8+++++	N1D55555, 	 	 	Hc**H--//C#CJ''''44			"(8$$CC  	" 	" 	"Hc**H--//CCC	" h1 	  	 Dw~~d##  	$
s%    B AC*)C*.D 3D98D9)Fr   )__name__
__module____qualname__r   r.   rM   rP   rZ   r`   r   r   rq   rs   ru   rx   rz   r}   r   rc    r   r   r   r      s1          # # # #& ;= 2 2 2 2     *     $  
 
 
               "    r   r   )r   r    r@   
lxml.etreeetreer   rD   r   r   r   r   r   r   r   <module>r      s    				  				            



 P P P P P P P P P Pr   