o
    Tg                     @   s   d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d d	lmZ d
efddZdeeB fddZdedefddZdefddZdejdejfddZdededefddZdS )    N)BeautifulSoupTag)	BaseModel)Image)
HTMLOutput)
JSONOutputJSONBlockOutput)MarkdownOutput)BlockOutput)settingshtmlc                 C   sN   t | d}t|j}t|dkr#t|d tr#|d jdkr#|j  t	|S )Nhtml.parser   r   p)
r   listcontentslen
isinstancer   namer   unwrapstr)r   soupr    r   L/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/marker/marker/output.pyunwrap_outer_tag   s
   

(
r   blockc                 C   s   t | dd s	| jS dd | jD }dd | jD }t| jd}|d}|D ]}|jd }||v r@t||| d}|| q&t|S )Nchildrenc                 S   s   g | ]}t |qS r   )json_to_html.0childr   r   r   
<listcomp>   s    z json_to_html.<locals>.<listcomp>c                 S   s   g | ]}|j qS r   )idr   r   r   r   r!      s    r   zcontent-refsrc)	getattrr   r   r   find_allattrsindexreplace_withr   )r   
child_html	child_idsr   content_refsrefsrc_id
child_soupr   r   r   r      s   


r   
output_dir
fname_basec              	   C   s<   g d}|D ]}t jt j| | d| r dS qdS )N)mdr   json.TF)ospathexistsjoin)r/   r0   extsextr   r   r   output_exists-   s    r:   renderedc                 C   sX   t | tr| jd| jfS t | tr| jd| jfS t | tr(| jdgdddi fS td)Nr1   r   metadata   )excludeindentr2   zInvalid output type)	r   r	   markdownimagesr   r   r   model_dump_json
ValueError)r;   r   r   r   text_from_rendered5   s   


rD   imagereturnc                 C   s   | j dkr
| d} | S )NRGB)modeconvert)rE   r   r   r   convert_if_not_rgb@   s   

rJ   c           	      C   s   t | \}}}|jtjddtj}ttj|| d| dtjd}|	| W d    n1 s5w   Y  ttj|| ddtjd}|	t
j| jdd W d    n1 s`w   Y  | D ]\}}t|}|tj||tj qid S )	Nreplace)errorsr3   zw+)encodingz
_meta.jsonr=   )r?   )rD   encoder   OUTPUT_ENCODINGdecodeopenr4   r5   r7   writer2   dumpsr<   itemsrJ   saveOUTPUT_IMAGE_FORMAT)	r;   r/   r0   textr9   rA   fimg_nameimgr   r   r   save_outputF   s0   r[   )r2   r4   bs4r   r   pydanticr   PILr   marker.renderers.htmlr   marker.renderers.jsonr   r   marker.renderers.markdownr	   marker.schema.blocksr
   marker.settingsr   r   r   r   r:   rD   rJ   r[   r   r   r   r   <module>   s     
