
    kh                         d dl mZ ddlmZmZmZmZmZ d ZddZ	ddZ
ddZ e       Zd	 Zd
 Z G d de      Zd Z G d de      Z e       j$                  Zd Zd Zd Zd Z G d de      Zy)   )flat_map   )TextNodeTagElement
ForceWriteNodeVisitorc                     t        |       S N)r   values    Q/var/www/teggl/fontify/venv/lib/python3.12/site-packages/mammoth/html/__init__.pytextr      s    E?    Nc                 `    t        | t              s| g} |i }t        | |t        |      |      S N	tag_names
attributescollapsible	separator)
isinstancelistr   boolr   s       r   tagr   	   s5    i&K	
ztKGXdmnnr   c                 @    |g }t        | |||      }t        ||      S r   )r   r   )r   r   childrenr   r   element_tags         r   elementr      s+    	jkenoK;))r   c                      t        | ||d      S )NT)r   )r   )r   r   r   s      r   collapsible_elementr!      s    9j(EEr   c                 "    t        t        |       S r   )r   _strip_empty_node)nodess    r   strip_emptyr%       s    %u--r   c                 4    t               j                  |       S r   )
StripEmptyvisit)nodes    r   r#   r#   $   s    <d##r   c                       e Zd Zd Zd Zd Zy)r'   c                 $    |j                   r|gS g S r   r   selfr)   s     r   visit_text_nodezStripEmpty.visit_text_node)   s    ::6MIr   c                     t        |j                        }t        |      dk(  r|j                         sg S t	        |j
                  |      gS )N    )r%   r   lenis_voidr   r   )r-   r   r   s      r   visit_elementzStripEmpty.visit_element/   s@    w//0x=Agoo&7IGKK233r   c                     |gS r    r,   s     r   visit_force_writezStripEmpty.visit_force_write6   s	    vr   N__name__
__module____qualname__r.   r3   r6   r5   r   r   r'   r'   (   s    4r   r'   c                 0    g }| D ]  }t        ||        |S r   )_collapsing_add)r$   	collapsedr)   s      r   collapser>   :   s(    I )	4() r   c                       e Zd Zd Zd Zd Zy)_CollapseNodec                     |S r   r5   r,   s     r   r.   z_CollapseNode.visit_text_nodeC       r   c                 T    t        |j                  t        |j                              S r   )r   r   r>   r   r-   r   s     r   r3   z_CollapseNode.visit_elementF   s    w{{HW-=-=$>??r   c                     |S r   r5   r,   s     r   r6   z_CollapseNode.visit_force_writeI   rB   r   Nr7   r5   r   r   r@   r@   B   s    @r   r@   c                 V    t        |      }t        | |      s| j                  |       y y r   )_collapse_node_try_collapseappend)r=   r)   collapsed_nodes      r   r<   r<   O   s)    #D)NN3( 4r   c                 L   | sy| d   }t        |t              rt        |t              sy|j                  syt        ||      sy|j                  r.|j
                  j                  t        |j                               |j
                  D ]  }t        |j
                  |        y)NFT)	r   r   r   	_is_matchr   r   rI   r   r<   )r=   r)   lastchilds       r   rH   rH   T   s    R=DdG$JtW,ET4 ~~T$..12 .u-. r   c                 h    | j                   |j                  v xr | j                  |j                  k(  S r   )tag_namer   r   )firstseconds     r   rM   rM   j   s-    >>V---W%2B2BfFWFW2WWr   c                 <    t        |       }|j                  |       y r   )_NodeWriter	visit_all)writerr$   visitors      r   writerY   n   s    &!Ger   c                   *    e Zd Zd Zd Zd Zd Zd Zy)rU   c                     || _         y r   )_writer)r-   rW   s     r   __init__z_NodeWriter.__init__t   s	    r   c                 N    | j                   j                  |j                         y r   )r\   r   r   r,   s     r   r.   z_NodeWriter.visit_text_nodew   s    $**%r   c                 f   |j                         r1| j                  j                  |j                  |j                         y | j                  j                  |j                  |j                         | j                  |j                         | j                  j                  |j                         y r   )	r2   r\   self_closingrQ   r   startrV   r   endrD   s     r   r3   z_NodeWriter.visit_elementz   sv    ??LL%%g&6&68J8JKLLw//1C1CDNN7++,LLW--.r   c                      y r   r5   rD   s     r   r6   z_NodeWriter.visit_force_write   s    r   c                 4    |D ]  }| j                  |        y r   )r(   )r-   r$   r)   s      r   rV   z_NodeWriter.visit_all   s     	DJJt	r   N)r8   r9   r:   r]   r.   r3   r6   rV   r5   r   r   rU   rU   s   s    &/r   rU   )NNN)NNNN)NN)listsr   r$   r   r   r   r   r	   r   r   r   r!   force_writer%   r#   r'   r>   r@   r(   rG   r<   rH   rM   rY   rU   r5   r   r   <module>rg      s     B Bo*F l.$ $K  &&)
,X
+ r   