
    gi                        d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZ erdd	lmZ dd
lmZ  G d de          Z G d de          ZdS )z;
AST renderers for inspecting the markdown parsing result.
    )annotationsN)TYPE_CHECKINGAnyoverload)HTMLRenderer   )camel_to_snake_case)Rendererforce_delegate)inline)Elementc                  |    e Zd ZdZdZedd            Zedd
            Zedd            Zedd            Zd ZdS )ASTRenderera  Render as AST structure.

    Example::

        >>> print(markdown('# heading', ASTRenderer))
        {'footnotes': [],
         'link_ref_defs': {},
         'children': [{'level': 1, 'children': ['heading'], 'element': 'heading'}],
         'element': 'document'}
    Felementinline.RawTextreturndict[str, Any]c                b    d|j         rt          j        |j                  n|j        |j         dS )Nraw_text)r   childrenescape)r   htmlunescaper   selfr   s     j/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/marko/ast_renderer.pyrender_raw_textzASTRenderer.render_raw_text#   s:     "3:>Wg.///wGWn
 
 	
    list[Element]list[dict[str, Any]]c                    d S N r   s     r   render_childrenzASTRenderer.render_children-   s    ORsr   r   c                    d S r"   r#   r   s     r   r$   zASTRenderer.render_children0   s    CF3r   strc                    d S r"   r#   r   s     r   r$   zASTRenderer.render_children3   s    47Cr   c                >    t          |t                    r fd|D             S t          |t                    r|S d |j                                        D             }d|v r                     |d                   |d<   t          |j        j                  |d<   |S )Nc                :    g | ]}                     |          S r#   render).0er   s     r   
<listcomp>z/ASTRenderer.render_children.<locals>.<listcomp>8   s#    444qDKKNN444r   c                D    i | ]\  }}|                     d           ||S )_
startswithr,   kvs      r   
<dictcomp>z/ASTRenderer.render_children.<locals>.<dictcomp>;   s/    QQQtq!q||C?P?PQaQQQr   r   r   )	
isinstancelistr&   __dict__itemsr+   r	   	__class____name__)r   r   rvs   `  r   r$   zASTRenderer.render_children6   s    gt$$ 	54444G4444gs## 	NQQw/5577QQQ![[J88BzN+G,=,FGG9	r   N)r   r   r   r   )r   r   r   r    )r   r   r   r   )r   r&   r   r&   )	r<   
__module____qualname____doc__delegater   r   r   r$   r#   r   r   r   r      s        	 	 H
 
 
 ^
 RRR XRFFF XF777 X7	 	 	 	 	r   r   c                  <     e Zd ZdZdZd fdZd fdZddZ xZS )XMLRenderera  Render as XML format AST.

    It will render the parsed result and XML string and you can print it or
    write it to a file.

    Example::

        >>> print(markdown('# heading', XMLRenderer))
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE document SYSTEM "CommonMark.dtd">
        <document footnotes="[]" link_ref_defs="{}">
        <heading level="1">
            heading
        </heading>
        </document>
    Fr   c                R    d| _         t                                                      S Nr   )indentsuper	__enter__)r   r;   s    r   rH   zXMLRenderer.__enter__V   s     ww  """r   argsr   Nonec                >    d| _          t                      j        | S rE   )rF   rG   __exit__)r   rI   r;   s     r   rL   zXMLRenderer.__exit__Z   s    uww&&r   r   r   r&   c                    g }| j         u r@|                    d j        z  dz              |                    d j        z  dz              d |j                                        D             }d                    d |                                D                       }t          |j        j                  }|                    d j        z  d| | dz              t          |d	d           pt          |d
d           }|rȉ xj        dz  c_        t          |t                    rM|                    d j        z  t          j        t          j        |          dd                   z              n!|                     fd|D                         xj        dz  c_        |                    d j        z  d| dz              n|d         d d         dz   |d<   d                    |          S )N z&<?xml version="1.0" encoding="UTF-8"?>z+<!DOCTYPE document SYSTEM "CommonMark.dtd">c                L    i | ]!\  }}|                     d           s|dv||"S )r0   )bodyr   r1   r3   s      r   r6   z/XMLRenderer.render_children.<locals>.<dictcomp>e   sJ     
 
 
1<<$$
 *+2F)F)F q)F)F)Fr    c              3  .   K   | ]\  }}d | d| dV  dS )rN   z=""Nr#   r3   s      r   	<genexpr>z.XMLRenderer.render_children.<locals>.<genexpr>j   s4      CCTQ=q==A===CCCCCCr   <>rP   r      r   c              3  B   K   | ]}                     |          V  d S r"   r*   )r,   childr   s     r   rT   z.XMLRenderer.render_children.<locals>.<genexpr>v   s/      FFET[[//FFFFFFr   z</z />
)	root_nodeappendrF   r9   r:   joinr	   r;   r<   getattrr7   r&   r   escape_htmljsondumpsextend)r   r   linesattrsattr_strelement_namer   s   `      r   r$   zXMLRenderer.render_children^   s   dn$$LLt{*-UUVVVLLdk!$QQ  
 
(..00
 
 

 77CCU[[]]CCCCC*7+<+EFFS4;&)F\)F8)F)F)FFGGG7FD11WWWjRV5W5W 	/KK1KK(C(( G$+%".tz(/C/CAbD/IJJK   
 FFFFXFFFFFFKK1KKLLt{*-A,-A-A-AABBBBb	#2#.E"Iyyr   )r   rC   )rI   r   r   rJ   )r   r   r   r&   )	r<   r>   r?   r@   rA   rH   rL   r$   __classcell__)r;   s   @r   rC   rC   B   s         " H# # # # # #' ' ' ' ' '               r   rC   )r@   
__future__r   r   ra   typingr   r   r   marko.html_rendererr   helpersr	   rendererr
   r   markor   marko.elementr   r   rC   r#   r   r   <module>rp      s    # " " " " "   / / / / / / / / / / , , , , , , ( ( ( ( ( ( . . . . . . . . &%%%%%%* * * * *( * * *Z9  9  9  9  9 ( 9  9  9  9  9 r   