a
    .b                     @   sF   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G dd dZdS )    Nc                   @   sV   e Zd Zdd ZdddZi fddZdd	 ZdddZdd ZdddZ	dd Z
d
S )Transc                 C   s   || _ i | _d S N)esheets)selferimp r   !/home/ernad/ernad/python/trans.py__init__   s    zTrans.__init__Fc                 C   s   |  |}t|||gsdS t|}| ||}t|}|d}	~~t	  |rrt
dd}
|
|	 |
  t|	}t|| 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_fufiZdo_error
sheet_fufiin_docout_doc	out_bytes
out_stringZ
error_filedatar   r   r	   fufi_to_json   s     





zTrans.fufi_to_jsonc                 C   s   |  |}| jjd }tj|}|ddd }| d| d| d}d}	|D ]}
|	d	|
 d
 ||
  7 }	qPd|	 d
| d
| }|d| d| 7 }tj|ddd dS )z;for papers screen transformation because so maxvars in lxmllog.   r   /_z.errz$--maxvars 1000000 --maxdepth 1000000z --stringparam  z/usr/bin/xsltproc z > z 2> T)checkshellN)	r   r   dirsospathbasenamesplit
subprocessrun)r   r   r   r   paramsr    log_dirZin_indicZerr_fufiargsparamsr   r   r	   
via_system'   s    
zTrans.via_systemc                 C   s.   |  ||}t|}|d}~~t  |S )Nr   )r   r   r   r   r   )r   r   r!   r"   r#   r$   r   r   r	   doc_to_json6   s    
zTrans.doc_to_jsonNc                 C   sH   |d u rt d}t|tr&t |}| j|||d}|j|dd |S )Nz<root/>)r6   T)pretty_print)r   
fromstring
isinstancestrr   r   r   )r   r   Zingestr   r6   r"   r   r   r	   ingest_to_fufi@   s    


zTrans.ingest_to_fufic                 C   s6   |  |}t|}t|}|d || j|< |S )Ni@B )r   r   r   XSLTset_global_max_depthr   )r   r   r    Z	sheet_docsheetr   r   r	   
load_sheetT   s    




zTrans.load_sheetc                 C   sD   || j vr| | | j | }|d u r0||}n||fi |}|S r   )r   rE   )r   r   r!   r6   rD   resultr   r   r	   r   \   s    



zTrans.get_resultc                 C   sF   | j }|jjd }| j jd d | | }tj|sBtd| |S )Nxslstyler*   zI don't see the file )r   abovoextr/   r0   r1   isfile	Exception)r   r   r   rJ   r    r   r   r	   r   g   s    zTrans.get_fufi)F)N)N)__name__
__module____qualname__r
   r&   r;   r<   rA   rE   r   r   r   r   r   r	   r      s   



r   )	r   r   r0   
lxml.etreeetreer   r4   r   r   r   r   r   r	   <module>   s   