
    khm7                        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y)    )unicode_literals)partialN   )	documentsresults
html_pathsimageswritershtml)InvalidFileReferenceError)
find_indexc           	         |g }|d}|t         j                  }t        | t        j                        rt        d | j                  D              }ni }g }t        |||||g |      }t        d      }	|j                  | |	      }
t        j                  |      }t        j                  |t        j                  t        j                  |
                   t!        j"                  |j%                         |      S )N c              3   8   K   | ]  }|j                   |f  y wN)
comment_id).0comments     N/var/www/teggl/fontify/venv/lib/python3.12/site-packages/mammoth/conversion.py	<genexpr>z3convert_document_element_to_html.<locals>.<genexpr>   s#      
 )
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_htmlr2      s     		'9--. 
"++
 

 H"# 7I !7GOOGW-E^^M*FJJvt}}T%5%5e%<=>>>&**,h77    c                   4    e Zd Z ej                         Zd Zy)r%   c                 .    t        j                  | fi |S r   )cobblecopy)selfkwargss     r   r7   z_ConversionContext.copy<   s    {{4*6**r3   N)__name__
__module____qualname__r6   fieldr   r7    r3   r   r%   r%   8   s    "fllnO+r3   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%y)&r$   c                 t    || _         || _        || _        || _        || _        g | _        || _        || _        y 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   s>    !##(?% /$&!+!r3   c                     	 | j                  |      S # t        $ rC}| j                  j                  t	        j
                  t        |                   g cY d }~S d }~ww xY wr   )rG   r   rA   appendr   warningstr)r8   imager0   errors       r   visit_imagez_DocumentConverter.visit_imageK   sL    	&&u--( 	NN!!'//#e*"=>I	s    	A8AAAc                    | j                  |j                  |      }| j                  D cg c]  }|j                  j	                  |       }}t        j                  di | j                  ||            }t        j                  di | j                  D cg c]  }| j                  ||      D ]  }|  c}}      }	|||	gz   S c c}w c c}}w )Noldl)	
_visit_allchildrenrE   notesresolver   r-   rF   visit_comment)
r8   documentr0   r1   	referencerV   
notes_listreferenced_comment	html_noder   s
             r   visit_documentz!_DocumentConverter.visit_documentR   s     1 17; "22
 NN""9-
 
 \\$DOOE7,KL
<<b&*&?&?+
"!//0BGL+
  +
+
 
 
H---

+
s   "C C
c                 Z      fd} j                        }|j                  |      S )Nc                      j                  j                        } j                  r| S t        j                  g| z   S r   )rT   rU   rD   r   force_write)contentr0   	paragraphr8   s    r   rU   z4_DocumentConverter.visit_paragraph.<locals>.childrenb   s;    ooi&8&8'BG,,(()G33r3   )_find_html_path_for_paragraphwrap)r8   rc   r0   rU   	html_paths   ```  r   visit_paragraphz"_DocumentConverter.visit_paragrapha   s)    	4 66yA	~~h''r3   c                      fd}g }j                   C j                  t        j                         d      }||j                  |j                         j
                  r |j                   j                  d             j                  r |j                   j                  d             j                  r"|j                   j                  dd             j                  r |j                   j                  d	             j                  t        j                  j                  k(  r'|j                  t        j                  d
gd             j                  t        j                  j                   k(  r'|j                  t        j                  dgd             j"                  r"|j                   j                  dd             j$                  r"|j                   j                  dd             |j                   j'                               |D ]  }t)        |j*                  |      }  |       S )Nc                  <    j                  j                         S r   )rT   rU   )r0   runr8   s   r   <lambda>z._DocumentConverter.visit_run.<locals>.<lambda>n   s    g> r3   )color	highlight
small_capsall_capsstrikethroughsdefault	underlinesubFfreshsupitalicemboldstrong)rm   _find_style	HighlightrK   rf   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   re   )r8   rj   r0   r1   pathsstylepaths   ```    r   	visit_runz_DocumentConverter.visit_runm   s   >==$$$YS]]%C[QE U__-LL::<HI??LL:::FGLL::?TW:XYLL::;GH!!Y%@%@%J%JJLL++UG5AB!!Y%@%@%L%LLLL++UG5AB==LL::8T:RS;;LL::68:TUT11#67 	.DDIIu-E	. wr3   Nc                     | j                  d |      }||j                  S |t        j                  |d      S t        j                  S )NFrv   )r}   rf   r   r-   empty)r8   element_typers   r   s       r   r   z/_DocumentConverter._find_style_for_run_property   sI      |4??" %%gU;;###r3   c                 B    t        j                  |j                        gS r   )r   textvalue)r8   r   r0   s      r   
visit_textz_DocumentConverter.visit_text   s    		$**%&&r3   c                 .   |j                   |j                  }n*dj                  | j                  |j                               }d|i}|j                  |j                  |d<   | j                  |j                  |      }t        j                  d||      gS )Nz#{0}hreftargeta)	anchorr   format_html_idtarget_framerT   rU   r   collapsible_element)r8   	hyperlinkr0   r   
attributesr1   s         r   visit_hyperlinkz"_DocumentConverter.visit_hyperlink   s    #>>D==y/?/?!@ADd^
!!-#,#9#9Jx 	 2 2G<((j%@AAr3   c                 Z    ddi}|j                   rd|d<   t        j                  d|      gS )Ntypecheckboxcheckedinput)r   r   r-   )r8   r   r0   r   s       r   visit_checkboxz!_DocumentConverter.visit_checkbox   s3    j)
$-Jy!Wj122r3   c                     t        j                  dd| j                  |j                        it         j                  g      }|gS )Nr   id)r   r   r   namera   )r8   bookmarkr0   r-   s       r   visit_bookmarkz!_DocumentConverter.visit_bookmark   s@    **4==/0  yr3   c                 .    t        j                  d      gS )N	)r   r   )r8   tabr0   s      r   	visit_tabz_DocumentConverter.visit_tab   s    		$  r3   tableTrv   c                 j      j                  d j                        j                   fd      S )Nr   c                  (    j                         S r   )_convert_table_children)r0   r8   r   s   r   rk   z0_DocumentConverter.visit_table.<locals>.<lambda>   s    $66ugF r3   )_find_html_path_default_table_pathre   )r8   r   r0   s   ```r   visit_tablez_DocumentConverter.visit_table   s,    ##E7D4L4LMTFG	Hr3   c                    t        d |j                        }|t        |j                        }|dk(  r-| j                  |j                  |j	                  d            }n| j                  |j                  d | |j	                  d            }| j                  |j                  |d  |j	                  d            }t        j                  di |      t        j                  di |      g}t
        j                  g|z   S )Nc                 V    t        | t        j                         xs | j                   S r   )r!   r   TableRow	is_header)childs    r   rk   z<_DocumentConverter._convert_table_children.<locals>.<lambda>   s"    j	0B0BCCZ5??GZ r3   r   Fr   Ttheadtbody)r   rU   lenrT   r7   r   r-   ra   )r8   r   r0   
body_indexrU   	head_rows	body_rowss          r   r   z*_DocumentConverter._convert_table_children   s    ZNN

 U^^,J?u~~w||TY|7Z[H{
(CW\\bf\EghIz{(CW\\bg\EhiIWb)4Wb)4H
   !H,,r3   c           	          t        j                  di t         j                  g| j                  |j                  |      z         gS )Ntr)r   r-   ra   rT   rU   )r8   	table_rowr0   s      r   visit_table_rowz"_DocumentConverter.visit_table_row   s8    T2(8(8'9DOOIL^L^`g<h'hijjr3   c                 P   |j                   rd}nd}i }|j                  dk7  rt        |j                        |d<   |j                  dk7  rt        |j                        |d<   t        j
                  g| j                  |j                  |      z   }t	        j                  |||      gS )Nthtdr   colspanrowspan)	r   r   rM   r   r   ra   rT   rU   r-   )r8   
table_cellr0   tag_namer   r1   s         r   visit_table_cellz#_DocumentConverter.visit_table_cell   s    ""HH
"$'
(:(:$;Jy!"$'
(:(:$;Jy!!!"T__Z5H5H'%RRLL:u5
 	
r3   c                 D    | j                  |      j                  d       S )Nc                      g S r   r>   r>   r3   r   rk   z0_DocumentConverter.visit_break.<locals>.<lambda>   s    2 r3   )_find_html_path_for_breakre   )r8   break_r0   s      r   visit_breakz_DocumentConverter.visit_break   s    --f5:::FFr3   c                     | j                  |d      }||j                  S |j                  dk(  r+t        j                  t        j
                  dd      g      S t        j                  S )NbreaklinebrTrv   )r}   rf   
break_typer   r   r-   r   )r8   r   r   s      r   r   z,_DocumentConverter._find_html_path_for_break   s]      1??"&(??J$6$6t4$H#IJJ###r3   c                 L   | j                   j                  |       t        | j                         }t        j                  di t        j                  dd| j                  |      z   | j                  |      dt        j                  dj                  |            g      g      gS )Nrx   r   #r   r   z[{0}])	rE   rK   r   r   r-   _note_html_id_note_ref_html_idr   r   )r8   note_referencer0   note_numbers       r   visit_note_referencez'_DocumentConverter.visit_note_reference   s    $$^4$//0LLS$"4"4^"DD00@# IIgnn[9:;=% 
 	
r3   c                 j   | j                  |j                  |      t        j                  di t        j                  d      t        j
                  ddd| j                  |      z   it        j                  t              g      g      gz   }t        j
                  dd| j                  |      i|      gS )Np r   r   r   lir   )	rT   bodyr   r   r   r-   r   	_up_arrowr   )r8   noter0   	note_bodys       r   
visit_notez_DocumentConverter.visit_note  s    OODIIw7$$S"		#S631G1G1M+M"NIIi(Q / ;
 
	 LLd&8&8&>?K
 	
r3   c                 x      fd} j                  d dt        j                        }|j                  |      S )Nc                     j                   j                     } t        j                        dz   }dj	                  t        |       |      }j                  j                  || f       t        j                  ddj                  dj                        z   j                  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labelrZ   r8   s      r   r1   z9_DocumentConverter.visit_comment_reference.<locals>.nodes  s    nnY%9%9:G112Q6E%%&;G&DeLE%%,,eW-=> S$"8"8IDXDX"YY11)Y=Q=QR# IIe$%' r3   comment_referencerr   )r   r   ignorere   )r8   rZ   r0   r1   rf   s   ``   r   visit_comment_referencez*_DocumentConverter.visit_comment_reference  s?    	 ((%% ) 
	 ~~e$$r3   c                    |\  }}| j                  |j                  |      t        j                  di t        j                  d      t        j
                  ddd| j                  d|j                        z   it        j                  t              g      g      gz   }t        j
                  dd| j                  d|j                        it        j                  d	j                  |            g      t        j
                  d
i |      gS )Nr   r   r   r   r   r   dtr   zComment {0}dd)rT   r   r   r   r   r-   r   r   r   r   r   )r8   r\   r0   r   r   r   s         r   rX   z _DocumentConverter.visit_comment*  s    +ww||W5$$S"		#S631H1HT[TfTf1g+g"hIIi(k / 9
 
 LLt--i9K9KLM=//678
 LLr4(
 	
r3   c                 `    |D cg c]  }| j                  ||      D ]  }|  c}}S c c}}w r   )r&   )r8   elementsr0   r-   r]   s        r   rT   z_DocumentConverter._visit_all?  sD     $
!ZZ9
  

 	
 
s    *c                     t        j                  t        j                  dd      g      }| j                  |d|d      S )Nr   Trv   rc   )warn_unrecognised)r   r   r-   r   )r8   rc   rs   s      r   rd   z0_DocumentConverter._find_html_path_for_paragraphG  s;    //:#5#5c#F"GH##I{GW[#\\r3   c                 H    | j                  |dt        j                  d      S )Nrj   T)rs   r   )r   r   r   )r8   rj   s     r   r   z*_DocumentConverter._find_html_path_for_runK  s#    ##C
8H8H\`#aar3   c           	      
   | j                  ||      }||j                  S |r`t        |dd       S| j                  j	                  t        j                  dj                  ||j                  |j                                     |S )Nstyle_idz+Unrecognised {0} style: {1} (Style ID: {2}))
r}   rf   getattrrA   rK   r   rL   r   
style_namer   )r8   r-   r   rs   r   r   s         r   r   z"_DocumentConverter._find_html_pathO  s{      ,7??"*d!C!ONN!!'//=DD '"4"4g6F6FH# 
 r3   c                 `    | j                   D ]  }|j                  }t        |||      s|c S  y r   )rB   document_matcher_document_matcher_matches)r8   r-   r   r   r  s        r   r}   z_DocumentConverter._find_style\  s3    __ 	E$55()97LQ	r3   c                 N    | j                  |j                  |j                        S r   )r   	note_typenote_idr8   r   s     r   r   z _DocumentConverter._note_html_idb  s    %%dnndllCCr3   c                 N    | j                  |j                  |j                        S r   )r   r  r  r  s     r   r   z$_DocumentConverter._note_ref_html_ide  s    &&t~~t||DDr3   c                 D    | j                  dj                  ||            S )Nz{0}-{1}r   r   r8   reference_typereference_ids      r   r   z$_DocumentConverter._referent_html_idh  s    }}Y--nlKLLr3   c                 D    | j                  dj                  ||            S )Nz{0}-ref-{1}r	  r
  s      r   r   z%_DocumentConverter._reference_html_idk  s    }}]11.,OPPr3   c                 :    dj                  | j                  |      S )Nz{0}{1})r   rC   )r8   suffixs     r   r   z_DocumentConverter._html_idn  s    t77r3   r   )F)&r:   r;   r<   rI   rP   r^   rg   r   r   r   r   r   r   r   r   r   r-   r   r   r   r   r   r   r   r   r   r   rX   rT   rd   r   r   r}   r   r   r   r   r   r>   r3   r   r$   r$   @   s    ".	(>$'B3! **//+=:+=+=wit+T*UVH-*k
 G$


%,
*
]bDEMQ8r3   r$   )argsc                   .    e Zd Z ej                         Zy)r~   N)r:   r;   r<   r6   r=   rl   r>   r3   r   r~   r~   r  s    FLLNEr3   r~   c                    | j                   dv r| j                   |k(  S | j                   dk(  r:| j                   |k(  xr) | j                  d u xs | j                  |j                  k(  S | j                   dk(  r*| j                   |k(  xr | j                  |j                  k(  S | j                   |k(  xr | j                  d u xs | j                  |j                  k(  xrw | j                  d u xs5 |j                  d uxr% | j                  j                  |j                        xr0 |dk7  xs) | j                  d u xs | j                  |j                  k(  S )N)rt   rp   ro   rn   r{   ry   r   rm   r   rc   )r   rl   r   r   r   matches	numbering)matcherr-   r   s      r   r  r  w  sd   ~~##|33				,  L0 F]]d"Dgmmw}}&D	
 
			(  L0 5'"4"44	
   L0 
  D( 5  G$4$44
 ""d* d""$.cG4F4F4N4NwOaOa4b
 + 7!!T)7!!W%6%66	
r3   c                 "    | j                   xs dS )Nr   )author_initials)r   s    r   r   r     s    ""(b(r3   u   ↑)NNNNT)
__future__r   	functoolsr   r6   r   r   r   r   r	   r
   r   
docx.filesr   listsr   r2   dataobjectr%   element_visitorr$   r~   r  r   r   r>   r3   r   <module>r     s    (   C C 1   $'8T + + +o8222: o8d	   
:) 	r3   