
    gi9                    z    d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddl
mZ erddlmZmZ  G d	 d
e          ZdS )z
Markdown renderer
    )annotationsN)contextmanager)TYPE_CHECKING	Generatorcast   )Renderer)blockinlinec                       e Zd ZdZd9 fdZd: fdZe	 d;d<d            Zd=dZd>dZ	d?dZ
d@dZdAdZdBdZdCdZdDdZdEdZdFd ZdGd"ZdHd$ZdId&ZdJd(ZdKd*ZdLd,ZdMd.ZdNd0ZdOd2ZdPd4ZdQd6ZdRd8Z xZS )SMarkdownRendererzRender the AST back to markdown document.

    It is useful for, e.g. merging sections and formatting documents.
    For convenience, markdown renderer provides all render functions for basic elements
    and those from common extensions.
    returnNonec                d    t                                                       d| _        d| _        d S N )super__init___prefix_second_prefixself	__class__s    i/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/marko/md_renderer.pyr   zMarkdownRenderer.__init__   s.         c                `    d| _         d| _        t                                                      S r   )r   r   r   	__enter__r   s    r   r   zMarkdownRenderer.__enter__   s(     ww  """r   r   prefixstrsecond_prefixGenerator[None, None, None]c              #     K   | j         }| j        }| xj         |z  c_         | xj        |z  c_        d V  || _         || _        d S Nr   r   )r   r   r    
old_prefixold_second_prefixs        r   	containerzMarkdownRenderer.container#   sZ       \
 /},!/r   elementblock.Paragraphc                b    |                      |          }| j        |z   dz   }| j        | _        |S N
)render_childrenr   r   )r   r(   childrenlines       r   render_paragraphz!MarkdownRenderer.render_paragraph/   s5    ''00|h&-*r   
block.Listc           
     Z   g }|j         rt          |j        |j                  D ]~\  }}|                     | ddt          t          |                    dz   z            5  |                    |                     |                     d d d            n# 1 swxY w Y   nh|j        D ]`}|                     |j	         dd          5  |                    |                     |                     d d d            n# 1 swxY w Y   a| j
        | _        d                    |          S )Nz.     z  r   )ordered	enumerater.   startr'   lenr   appendrenderbulletr   r   join)r   r(   resultnumchilds        r   render_listzMarkdownRenderer.render_list5   s   ? 	6'(8'-HH 6 6
U^^sJJJs3s88}}q7H0IJJ 6 6MM$++e"4"45556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 !) 6 6^^w~$8$8$8$?? 6 6MM$++e"4"45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6*wwvs$   ")BB	B	)D  D	D	block.ListItemc                ,    |                      |          S r#   r-   r   r(   s     r   render_list_itemz!MarkdownRenderer.render_list_itemB   s    ##G,,,r   block.Quotec                    |                      dd          5  |                     |                              d          }d d d            n# 1 swxY w Y   | j        | _        |dz   S )Nz> r,   )r'   r-   rstripr   r   r   r(   r=   s      r   render_quotezMarkdownRenderer.render_quoteE   s    ^^D$'' 	@ 	@))'2299$??F	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@*}s   )AAAblock.FencedCodec                b    |j         r
d|j          nd} j        d|j         | z   g}|                     fd                     |                                          D                        |                     j        dz               j         _        d                    |          dz   S )Nr3   r   z```c              3  ,   K   | ]}j         |z   V  d S r#   r   ).0r/   r   s     r   	<genexpr>z6MarkdownRenderer.render_fenced_code.<locals>.<genexpr>N   s?       
 
 $&
 
 
 
 
 
r   r,   )	extrar   langextendr-   
splitlinesr9   r   r<   )r   r(   rQ   liness   `   r   render_fenced_codez#MarkdownRenderer.render_fenced_codeK   s    '.}<#GM###" ;gl ;E ; ;;< 
 
 
 
,,W55@@BB
 
 
 	
 	
 	
 	T(50111*yy$&&r   block.CodeBlockc                     d                      |                                          } j        z   |d         z   g fd|dd          D             z   } j         _        d                    |          dz   S )Nz    r   c                *    g | ]}j         z   |z   S  rN   )rO   r/   indentr   s     r   
<listcomp>z6MarkdownRenderer.render_code_block.<locals>.<listcomp>Y   s3     6
 6
 6
48D&(4/6
 6
 6
r   r   r,   )r-   rT   r   r   r<   )r   r(   rU   r[   s   `  @r   render_code_blockz"MarkdownRenderer.render_code_blockV   s    $$W--88::&q12 6
 6
 6
 6
 6
<A!""I6
 6
 6
 
 *yy$&&r   block.HTMLBlockc                B    | j         |j        z   dz   }| j        | _         |S r+   )r   bodyr   rI   s      r   render_html_blockz"MarkdownRenderer.render_html_block_   s$    ,t3*r   block.ThematicBreakc                2    | j         dz   }| j        | _         |S )Nz* * *
r$   rI   s      r   render_thematic_breakz&MarkdownRenderer.render_thematic_breakd   s    	)*r   block.Headingc                z    | j         d|j        z  z   dz   |                     |          z   dz   }| j        | _         |S )N#r3   r,   )r   levelr-   r   rI   s      r   render_headingzMarkdownRenderer.render_headingi   sV    LGM!" ""7++, 	 	 *r   block.SetextHeadingc                H    |                      t          d|                    S )Nre   )ri   r   rD   s     r   render_setext_headingz&MarkdownRenderer.render_setext_headingt   s     ""4#A#ABBBr   block.BlankLinec                2    | j         dz   }| j        | _         |S r+   r$   rI   s      r   render_blank_linez"MarkdownRenderer.render_blank_linew   s    $*r   block.LinkRefDefc                T    |j         }|j        r|d|j         z  }d|j         d| dS )Nr3   [z]: r,   )desttitlelabel)r   r(   	link_texts      r   render_link_ref_defz$MarkdownRenderer.render_link_ref_def|   sC    L	= 	-,W],,,I27=22Y2222r   inline.Emphasisc                4    d|                      |           dS )N*rC   rD   s     r   render_emphasisz MarkdownRenderer.render_emphasis   s!    34''003333r   inline.StrongEmphasisc                4    d|                      |           dS )Nz**rC   rD   s     r   render_strong_emphasisz'MarkdownRenderer.render_strong_emphasis   s!    5D((115555r   inline.InlineHTMLc                6    t          t          |j                  S r#   )r   r   r.   rD   s     r   render_inline_htmlz#MarkdownRenderer.render_inline_html   s    C)***r   inline.Linkc                   |                                }j        r.d                    j                            dd                    nd | j        sJ t          fd| j        j                                        D             d           }|||k    rd| dS d| d| dS d nd	}d| d
j         | dS )Nz"{}""\"c              3  <   K   | ]\  }}|j         fk    |V  d S r#   rs   )rO   kvr(   
link_titles      r   rP   z/MarkdownRenderer.render_link.<locals>.<genexpr>   sE        Aqz222 2222 r   rr   ]z][r3   r   z]())	r-   rt   formatreplace	root_nodenextlink_ref_defsitemsrs   )r   r(   rv   ru   rt   r   s    `   @r   render_linkzMarkdownRenderer.render_link   s   ((11	@GWFMM'-//U;;<<<SW 	 ~     N8>>@@  
 
 
 	!!#5|||#,y,,E,,,,$.$: J   69666e6666r   inline.AutoLinkc                    d|j          dS )N<>r   rD   s     r   render_auto_linkz!MarkdownRenderer.render_auto_link   s    "7<""""r   inline.Imagec                    d}|j         r.d                    |j                             dd                    nd}|                    |                     |          |j        |          S )Nz![{}]({}{})z "{}"r   r   r   )rt   r   r   r-   rs   )r   r(   templatert   s       r   render_imagezMarkdownRenderer.render_image   sb     AHVGNN7=00e<<===TV 	 t33G<<glERRRr   inline.Literalc                    d|j          S )N\r.   rD   s     r   render_literalzMarkdownRenderer.render_literal   s    &G$&&&r   inline.RawTextc                D    ddl m} t          j        |d|j                  S )Nr   )PANGU_REr3   )	ext.pangur   resubr.   )r   r(   r   s      r   render_raw_textz MarkdownRenderer.render_raw_text   s+    ''''''vhW%5666r   inline.LineBreakc                    |j         rdndS )Nr,   z\
)softrD   s     r   render_line_breakz"MarkdownRenderer.render_line_break   s    |/tt/r   inline.CodeSpanc                f    |j         }|r|d         dk    s|d         dk    rd| dS d|j          dS )Nr   `z`` z ``r   )r   r(   texts      r   render_code_spanz!MarkdownRenderer.render_code_span   sL     	#DGsNNd2h#oo"???"&7#&&&&r   )r   r   )r   r   )r   )r   r   r    r   r   r!   )r(   r)   r   r   )r(   r1   r   r   )r(   rA   r   r   )r(   rF   r   r   )r(   rK   r   r   )r(   rW   r   r   )r(   r^   r   r   )r(   rb   r   r   )r(   re   r   r   )r(   rj   r   r   )r(   rm   r   r   )r(   rp   r   r   )r(   rx   r   r   )r(   r|   r   r   )r(   r   r   r   )r(   r   r   r   )r(   r   r   r   )r(   r   r   r   )r(   r   r   r   )r(   r   r   r   )r(   r   r   r   )r(   r   r   r   )__name__
__module____qualname____doc__r   r   r   r'   r0   r@   rE   rJ   rV   r]   ra   rd   ri   rl   ro   rw   r{   r~   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r      sM        ! ! ! ! ! !
# # # # # #
 02	0 	0 	0 	0 ^	0      - - - -   	' 	' 	' 	'' ' ' '   
   
	 	 	 	C C C C   
3 3 3 34 4 4 46 6 6 6+ + + +7 7 7 7*# # # #S S S S' ' ' '7 7 7 7
0 0 0 0' ' ' ' ' ' ' 'r   r   )r   
__future__r   r   
contextlibr   typingr   r   r   rendererr	   r   r
   r   r   rZ   r   r   <module>r      s     # " " " " " 				 % % % % % % 1 1 1 1 1 1 1 1 1 1        h' h' h' h' h'x h' h' h' h' h'r   