
    %jm7                     $   d dl mZ d dlmZ d dlZddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ 	 	 	 	 	 dd	Zej         G d
 de                      Z G d d ej        d                    Zej         G d d                      Zd Zd ZdZdS )    )unicode_literals)partialN   )	documentsresults
html_pathsimageswritershtml)InvalidFileReferenceError)
find_indexTc           	         |g }|d}|t           j        }t          | t          j                  rt          d | j        D                       }ni }g }t          |||||g |          }t          d          }	|	                    | |	          }
t          j        |          }t          j        |t          j        t          j        |
                               t!          j        |                                |          S )N c              3   (   K   | ]}|j         |fV  d S N)
comment_id).0comments     Z/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/mammoth/conversion.py	<genexpr>z3convert_document_element_to_html.<locals>.<genexpr>   s>       
 
 )
 
 
 
 
 
    )messages	style_mapconvert_image	id_prefixignore_empty_paragraphsnote_referencescommentsFis_table_header)r	   data_uri
isinstancer   Documentdictr   _DocumentConverter_ConversionContextvisitr
   writerr   writecollapsestrip_emptyr   Result	as_string)elementr   r   r   output_formatr   r   r   	convertercontextnodesr(   s               r    convert_document_element_to_htmlr3      s    		'9-..  
 
"+
 
 
 
 

 H"# 7  I !777GOOGW--E^M**FJvt}T%5e%<%<==>>>>&**,,h777r   c                   2    e Zd Z ej                    Zd ZdS )r&   c                 &    t          j        | fi |S r   )cobblecopy)selfkwargss     r   r7   z_ConversionContext.copy<   s    {4**6***r   N)__name__
__module____qualname__r6   fieldr    r7    r   r   r&   r&   8   s0        "flnnO+ + + + +r   r&   c                      e Zd Zd Zd Zd Zd Zd Zd%dZd Z	d	 Z
d
 Zd Zd Z ej         ej        dgd          g          Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd&dZd Z d  Z!d! Z"d" Z#d# Z$d$ Z%dS )'r%   c                 v    || _         || _        || _        || _        || _        g | _        || _        || _        d S r   )	_messages
_style_map
_id_prefix_ignore_empty_paragraphs_note_references_referenced_comments_convert_image	_comments)r8   r   r   r   r   r   r   r   s           r   __init__z_DocumentConverter.__init__A   sB    !##(?% /$&!+!r   c                     	 |                      |          S # t          $ rE}| j                            t	          j        t          |                               g cY d }~S d }~ww xY wr   )rG   r   rA   appendr   warningstr)r8   imager1   errors       r   visit_imagez_DocumentConverter.visit_imageK   so    	&&u---( 	 	 	N!!'/#e**"="=>>>IIIIII	s    
A&:A!A&!A&c                                           j                  }fd j        D             }t          j        di                       |                    }t          j        di  fd j        D                       }|||gz   S )Nc                 D    g | ]}j                             |          S r>   )notesresolve)r   	referencedocuments     r   
<listcomp>z5_DocumentConverter.visit_document.<locals>.<listcomp>T   s9     
 
 
 N""9--
 
 
r   oldlc                 F    g | ]}                     |          D ]}|S r>   )visit_comment)r   referenced_comment	html_noder1   r8   s      r   rW   z5_DocumentConverter.visit_document.<locals>.<listcomp>Y   sQ     +
 +
 +
"!//0BGLL+
 +
  +
 +
 +
 +
r   )
_visit_allchildrenrE   r   r.   rF   )r8   rV   r1   r2   rS   
notes_listr   s   ```    r   visit_documentz!_DocumentConverter.visit_documentR   s     17;;
 
 
 
!2
 
 
 \$DOOE7,K,KLL
<b +
 +
 +
 +
 +
&*&?+
 +
 +
  
 
H---r   c                 j      fd}                                }|                    |          S )Nc                  l                         j                  } j        r| S t          j        g| z   S r   )r^   r_   rD   r   force_write)contentr1   	paragraphr8   s    r   r_   z4_DocumentConverter.visit_paragraph.<locals>.childrenb   s:    ooi&8'BBG, 4()G33r   )_find_html_path_for_paragraphwrap)r8   rf   r1   r_   	html_paths   ```  r   visit_paragraphz"_DocumentConverter.visit_paragrapha   sO    	4 	4 	4 	4 	4 	4 	4 66yAA	~~h'''r   c                      fd}g }j         E                     t          j                   d          }||                    |j                   j        r(|                                         d                     j        r(|                                         d                     j        r*|                                         dd                     j	        r(|                                         d	                     j
        t          j        j        k    r*|                    t          j        d
gd                     j
        t          j        j        k    r*|                    t          j        dgd                     j        r*|                                         dd                     j        r*|                                         dd                     |                                                              |D ]}t)          |j        |          } |            S )Nc                  :                         j                   S r   )r^   r_   )r1   runr8   s   r   <lambda>z._DocumentConverter.visit_run.<locals>.<lambda>n   s    g>> r   )color	highlight
small_capsall_capsstrikethroughsdefault	underlinesubFfreshsupitalicemboldstrong)rp   _find_style	HighlightrK   ri   is_small_caps_find_style_for_run_propertyis_all_capsis_strikethroughis_underlinevertical_alignmentr   VerticalAlignment	subscriptr   r.   superscript	is_italicis_bold_find_html_path_for_runr   rh   )r8   rm   r1   r2   pathsstylepaths   ```    r   	visit_runz_DocumentConverter.visit_runm   s4   >>>>>>=$$$YS]%C%C%C[QQE U_--- 	JLL::<HHIII? 	HLL:::FFGGG 	ZLL::?TW:XXYYY 	ILL::;GGHHH!Y%@%JJJLL+UG5AAABBB!Y%@%LLLLL+UG5AAABBB= 	TLL::8T:RRSSS; 	VLL::68:TTUUUT11#66777 	. 	.DDIu--EEuwwr   Nc                     |                      d |          }||j        S |t          j        |d          S t          j        S )NFry   )r   ri   r   r.   empty)r8   element_typerv   r   s       r   r   z/_DocumentConverter._find_style_for_run_property   sJ      |44?" %gU;;;;##r   c                 6    t          j        |j                  gS r   )r   textvalue)r8   r   r1   s      r   
visit_textz_DocumentConverter.visit_text   s    	$*%%&&r   c                    |j         |j        }n-d                    |                     |j                             }d|i}|j        
|j        |d<   |                     |j        |          }t          j        d||          gS )Nz#{0}hreftargeta)	anchorr   format_html_idtarget_framer^   r_   r   collapsible_element)r8   	hyperlinkr1   r   
attributesr2   s         r   visit_hyperlinkz"_DocumentConverter.visit_hyperlink   s    #>DD==y/?!@!@AADd^
!-#,#9Jx 	 2G<<(j%@@AAr   c                 N    ddi}|j         rd|d<   t          j        d|          gS )Ntypecheckboxcheckedinput)r   r   r.   )r8   r   r1   r   s       r   visit_checkboxz!_DocumentConverter.visit_checkbox   s6    j)
 	.$-Jy!Wj1122r   c                 ~    t          j        dd|                     |j                  it           j        g          }|gS )Nr   id)r   r   r   namerd   )r8   bookmarkr1   r.   s       r   visit_bookmarkz!_DocumentConverter.visit_bookmark   s@    *4==//0    yr   c                 ,    t          j        d          gS )N	)r   r   )r8   tabr1   s      r   	visit_tabz_DocumentConverter.visit_tab   s    	$  r   tableTry   c                 p                           d j                                       fd          S )Nr   c                  0                                    S r   )_convert_table_children)r1   r8   r   s   r   rn   z0_DocumentConverter.visit_table.<locals>.<lambda>   s    $66ugFF r   )_find_html_path_default_table_pathrh   )r8   r   r1   s   ```r   visit_tablez_DocumentConverter.visit_table   s@    ##E7D4LMMTFFFFFFGG	Hr   c                    t          d |j                  }|t          |j                  }|dk    r0|                     |j        |                    d                    }n|                     |j        d |         |                    d                    }|                     |j        |d          |                    d                    }t          j        di |          t          j        di |          g}t
          j        g|z   S )Nc                 H    t          | t          j                   p| j         S r   )r"   r   TableRow	is_header)childs    r   rn   z<_DocumentConverter._convert_table_children.<locals>.<lambda>   s     j	0BCCCZ5?GZ r   r   Fr   Ttheadtbody)r   r_   lenr^   r7   r   r.   rd   )r8   r   r1   
body_indexr_   	head_rows	body_rowss          r   r   z*_DocumentConverter._convert_table_children   s    ZZN
 

 U^,,J??u~w||TY|7Z7Z[[HH{
{(CW\\bf\EgEghhIz{{(CW\\bg\EhEhiiIWb)44Wb)44H
  !H,,r   c           	      ~    t          j        di t           j        g|                     |j        |          z             gS )Ntr)r   r.   rd   r^   r_   )r8   	table_rowr1   s      r   visit_table_rowz"_DocumentConverter.visit_table_row   s6    T2(8'9DOOIL^`g<h<h'hiijjr   c                 &   |j         rd}nd}i }|j        dk    rt          |j                  |d<   |j        dk    rt          |j                  |d<   t          j        g|                     |j        |          z   }t	          j        |||          gS )Nthtdr   colspanrowspan)	r    r   rM   r   r   rd   r^   r_   r.   )r8   
table_cellr1   tag_namer   r2   s         r   visit_table_cellz#_DocumentConverter.visit_table_cell   s    " 	HHH
""$'
(:$;$;Jy!""$'
(:$;$;Jy!!"T__Z5H'%R%RRL:u55
 	
r   c                 T    |                      |                              d           S )Nc                      g S r   r>   r>   r   r   rn   z0_DocumentConverter.visit_break.<locals>.<lambda>   s    2 r   )_find_html_path_for_breakrh   )r8   break_r1   s      r   visit_breakz_DocumentConverter.visit_break   s&    --f55::::FFFr   c                     |                      |d          }||j        S |j        dk    r)t          j        t          j        dd          g          S t          j        S )NbreaklinebrTry   )r   ri   
break_typer   r   r.   r   )r8   r   r   s      r   r   z,_DocumentConverter._find_html_path_for_break   s_      11?"&((?J$6t4$H$H$H#IJJJ##r   c                 Z   | j                             |           t          | j                   }t          j        di t          j        dd|                     |          z   |                     |          dt          j        d                    |                    g          g          gS )Nr{   r   #r   r   z[{0}])	rE   rK   r   r   r.   _note_html_id_note_ref_html_idr   r   )r8   note_referencer1   note_numbers       r   visit_note_referencez'_DocumentConverter.visit_note_reference   s    $$^444$/00LS$"4"4^"D"DD00@@# # Ignn[99::;= =%  
 	
r   c                 p   |                      |j        |          t          j        di t          j        d          t          j        ddd|                     |          z   it          j        t                    g          g          gz   }t          j        dd|                     |          i|          gS )Np r   r   r   lir   )	r^   bodyr   r   r   r.   r   	_up_arrowr   )r8   noter1   	note_bodys       r   
visit_notez_DocumentConverter.visit_note  s    OODIw77$S"	#S631G1G1M1M+M"NIi((Q  /  ;
 
	 Ld&8&8&>&>?KK
 	
r   c                       fd}                      d dt          j                  }|                    |          S )Nc                     j         j                 } t          j                  dz   }d                    t          |           |          }j                            || f           t          j        dd	                    dj                  z   
                    dj                  dt          j        |          g          gS )Nr   z[{0}{1}]r   r   r   r   )rH   r   r   rF   r   _comment_author_labelrK   r   r.   _referent_html_id_reference_html_idr   )r   countlabelrU   r8   s      r   r2   z9_DocumentConverter.visit_comment_reference.<locals>.nodes  s    nY%9:G122Q6E%%&;G&D&DeLLE%,,eW-=>>> S$"8"8IDX"Y"YY11)Y=QRR# # Ie$$%' ' r   comment_referenceru   )r   r   ignorerh   )r8   rU   r1   r2   ri   s   ``   r   visit_comment_referencez*_DocumentConverter.visit_comment_reference  s^    	 	 	 	 	 	 ((% ) 
 
	 ~~e$$$r   c                    |\  }}|                      |j        |          t          j        di t          j        d          t          j        ddd|                     d|j                  z   it          j        t                    g          g          gz   }t          j        dd| 	                    d|j                  it          j        d	
                    |                    g          t          j        d
i |          gS )Nr   r   r   r   r   r   dtr   zComment {0}dd)r^   r   r   r   r   r.   r   r   r   r   r   )r8   r\   r1   r   r   r   s         r   r[   z _DocumentConverter.visit_comment*  s    +ww|W55$S"	#S631H1HT[Tf1g1g+g"hIi((k  /  9
 
 Lt--i9KLLM=//66778 
 Lr4((
 	
r   c                 $      fd|D             S )Nc                 F    g | ]}                     |          D ]}|S r>   )r'   )r   r.   r]   r1   r8   s      r   rW   z1_DocumentConverter._visit_all.<locals>.<listcomp>@  sN     
 
 
!ZZ99
 
  
 
 
 
r   r>   )r8   elementsr1   s   ` `r   r^   z_DocumentConverter._visit_all?  s4    
 
 
 
 
#
 
 
 	
r   c                     t          j        t          j        dd          g          }|                     |d|d          S )Nr   Try   rf   )warn_unrecognised)r   r   r.   r   )r8   rf   rv   s      r   rg   z0_DocumentConverter._find_html_path_for_paragraphG  sB    /:#5c#F#F#F"GHH##I{GW[#\\\r   c                 H    |                      |dt          j        d          S )Nrm   T)rv   r   )r   r   r   )r8   rm   s     r   r   z*_DocumentConverter._find_html_path_for_runK  s#    ##C
8H\`#aaar   Fc           	          |                      ||          }||j        S |r\t          |dd           K| j                            t          j        d                    ||j        |j	                                       |S )Nstyle_idz+Unrecognised {0} style: {1} (Style ID: {2}))
r   ri   getattrrA   rK   r   rL   r   
style_namer  )r8   r.   r   rv   r   r   s         r   r   z"_DocumentConverter._find_html_pathO  s      ,77?" 	*d!C!C!ON!!'/=DD '"4g6FH H# #   
 r   c                 R    | j         D ]}|j        }t          |||          r|c S d S r   )rB   document_matcher_document_matcher_matches)r8   r.   r   r   r  s        r   r   z_DocumentConverter._find_style\  sI    _ 	 	E$5()97LQQ 	 	r   c                 B    |                      |j        |j                  S r   )r   	note_typenote_idr8   r   s     r   r   z _DocumentConverter._note_html_idb  s    %%dndlCCCr   c                 B    |                      |j        |j                  S r   )r   r  r	  r
  s     r   r   z$_DocumentConverter._note_ref_html_ide  s    &&t~t|DDDr   c                 T    |                      d                    ||                    S )Nz{0}-{1}r   r   r8   reference_typereference_ids      r   r   z$_DocumentConverter._referent_html_idh  s$    }}Y--nlKKLLLr   c                 T    |                      d                    ||                    S )Nz{0}-ref-{1}r  r  s      r   r   z%_DocumentConverter._reference_html_idk  s$    }}]11.,OOPPPr   c                 8    d                     | j        |          S )Nz{0}{1})r   rC   )r8   suffixs     r   r   z_DocumentConverter._html_idn  s    t777r   r   )F)&r:   r;   r<   rI   rP   ra   rj   r   r   r   r   r   r   r   r   r   r.   r   r   r   r   r   r   r   r   r   r   r[   r^   rg   r   r   r   r   r   r   r   r   r>   r   r   r%   r%   @   s9       " " "  . . .	( 	( 	(  >$ $ $ $' ' 'B B B3 3 3  ! ! ! **/+=:+=wit+T+T+T*UVVH H H- - -*k k k
 
 
 G G G$ $ $

 

 


 
 
% % %,
 
 
*
 
 
] ] ]b b b     D D DE E EM M MQ Q Q8 8 8 8 8r   r%   )argsc                   ,    e Zd Z ej                    ZdS )r   N)r:   r;   r<   r6   r=   ro   r>   r   r   r   r   r  s        FLNNEEEr   r   c                    | j         dv r| j         |k    S | j         dk    r$| j         |k    o| j        d u p| j        |j        k    S | j         dk    r| j         |k    o| j        |j        k    S | j         |k    oh| j        d u p| j        |j        k    oO| j        d u p'|j        d uo| j                            |j                  o|dk    p| j        d u p| j        |j        k    S )N)rw   rs   rr   rq   r~   r|   r   rp   r   rf   )r   ro   r   r  r  matches	numbering)matcherr.   r   s      r   r  r  w  s1   ~~~#|33			,	, L0 F]d"Dgmw}&D	
 
		(	( L0 5'"44	
  L0 
 D( 5 G$44
 "d* d"$.cG4F4N4NwOa4b4b
 + 7!T)7!W%66	
r   c                     | j         pdS )Nr   )author_initials)r   s    r   r   r     s    "(b(r   u   ↑)NNNNT)
__future__r   	functoolsr   r6   r   r   r   r   r	   r
   r   
docx.filesr   listsr   r3   dataobjectr&   element_visitorr%   r   r  r   r   r>   r   r   <module>r#     s   ( ' ' ' ' '        C C C C C C C C C C C C C C C C 1 1 1 1 1 1        $'8 '8 '8 '8T + + + + + + + +o8 o8 o8 o8 o822::: o8 o8 o8d	        
 
 
:) ) ) 			r   