a
    )ñ»jAf  ã                   @  sè  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
 d dlmZ d dlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZmZmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) G dd„ dƒZ*G dd„ de*ƒZ+G dd„ de*ƒZ,G dd„ de,ƒZ-eG dd„ dƒƒZ.G dd„ de,ƒZ/G d d!„ d!e,ƒZ0G d"d#„ d#e,ƒZ1G d$d%„ d%e*ƒZ2G d&d'„ d'e*ƒZ3G d(d)„ d)e*ƒZ4G d*d+„ d+e*ƒZ5G d,d-„ d-e*ƒZ6G d.d/„ d/e*ƒZ7G d0d1„ d1e*ƒZ8G d2d3„ d3e,ƒZ9G d4d5„ d5e,ƒZ:G d6d7„ d7e,ƒZ;G d8d9„ d9ƒZ<G d:d;„ d;eƒZ=e>d<k�räd dl?Z?d dlZe?j@d=d>�ZAeAjBd?d@dAdB� eAjBdCdDdEdFddGdH� eAjBdIdJdKdLdMdN� eAjBdOdPdQddQdN� eAjBdRdSdTdFdUdV� eAjBdWdXeCdYddZd[� eAjBd\d]d^dFd_dV� eAjBd`dadbdFdcdV� eA D¡ ZEd ddlFmZ eEjGdek�r ejH I¡ ZJn8eKeEjGdfdg��ZLeL I¡ ZJW d  ƒ n1 �sN0    Y  e=eJeEjM�rhdhndieEjNeEjOeEjPdj�ZQeEjR�rÈd dlSZSd dlTZTeS U¡ ZVeeVeEjWeEjXdk�Ze YeQ¡ eT ZeV [¡ ¡ neeEjWeEjXdldm�Ze YeQ¡ dS )né    )ÚannotationsN)Ú	dataclass)ÚClassVarÚIterableÚget_args)Ú
MarkdownIt)ÚToken)ÚTableé   )Úbox)Ú
loop_first)ÚStack)ÚConsoleÚConsoleOptionsÚJustifyMethodÚRenderResult)ÚRenderables)ÚJupyterMixin)ÚRule)ÚSegment)ÚStyleÚ
StyleStack)ÚSyntax)ÚTextÚTextTypec                   @  s†   e Zd ZU dZded< eddd dœdd„ƒZd	d
dœdd„Zd	dd
dœdd„Zd	d
dœdd„Z	d	d ddœdd„Z
ddddœdd„ZdS )ÚMarkdownElementTzClassVar[bool]Únew_lineÚMarkdownr   ©ÚmarkdownÚtokenÚreturnc                 C  s   | ƒ S )zòFactory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Token): A node from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
        © ©Úclsr   r    r"   r"   ú3E:\soccer\ml_env\Lib\site-packages\rich/markdown.pyÚcreate   s    zMarkdownElement.createÚMarkdownContextÚNone©Úcontextr!   c                 C  s   dS )zuCalled when the node is entered.

        Args:
            context (MarkdownContext): The markdown context.
        Nr"   ©Úselfr*   r"   r"   r%   Úon_enter)   s    zMarkdownElement.on_enterr   ©r*   Útextr!   c                 C  s   dS )zpCalled when text is parsed.

        Args:
            context (MarkdownContext): The markdown context.
        Nr"   ©r,   r*   r/   r"   r"   r%   Úon_text0   s    zMarkdownElement.on_textc                 C  s   dS )zwCalled when the parser leaves the element.

        Args:
            context (MarkdownContext): [description]
        Nr"   r+   r"   r"   r%   Úon_leave7   s    zMarkdownElement.on_leaveÚbool©r*   Úchildr!   c                 C  s   dS )a|  Called when a child element is closed.

        This method allows a parent element to take over rendering of its children.

        Args:
            context (MarkdownContext): The markdown context.
            child (MarkdownElement): The child markdown element.

        Returns:
            bool: Return True to render the element, or False to not render the element.
        Tr"   ©r,   r*   r5   r"   r"   r%   Úon_child_close>   s    zMarkdownElement.on_child_closer   r   r   ©ÚconsoleÚoptionsr!   c                 C  s   dS )Nr"   r"   ©r,   r9   r:   r"   r"   r%   Ú__rich_console__L   s    z MarkdownElement.__rich_console__N)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__Úclassmethodr&   r-   r1   r2   r7   r<   r"   r"   r"   r%   r      s   
r   c                   @  s   e Zd ZdZdS )ÚUnknownElementz’An unknown element.

    Hopefully there will be no unknown elements, and we will have a MarkdownElement for
    everything in the document.

    N)r=   r>   r?   Ú__doc__r"   r"   r"   r%   rB   R   s   rB   c                   @  sF   e Zd ZdZdZdddœdd„Zdddd	œd
d„Zdddœdd„ZdS )ÚTextElementz)Base class for elements that render text.Únoner'   r(   r)   c                 C  s   |  | j¡| _tdd�| _d S ©NÚleft©Újustify)Úenter_styleÚ
style_nameÚstyler   r/   r+   r"   r"   r%   r-   `   s    zTextElement.on_enterr   r.   c                 C  s"   | j  |t|tƒr|jnd ¡ d S ©N)r/   ÚappendÚ
isinstanceÚstrÚcurrent_styler0   r"   r"   r%   r1   d   s    zTextElement.on_textc                 C  s   |  ¡  d S rM   )Úleave_styler+   r"   r"   r%   r2   g   s    zTextElement.on_leaveN)r=   r>   r?   rC   rK   r-   r1   r2   r"   r"   r"   r%   rD   [   s
   rD   c                   @  sV   e Zd ZU dZdZded< eddd dœdd	„ƒZdd
dœdd„Zddddœdd„Z	dS )Ú	ParagraphzA Paragraph.zmarkdown.paragraphr   rI   r   r   r   c                 C  s   | |j p
dd�S rF   rH   r#   r"   r"   r%   r&   q   s    zParagraph.creater(   ©rI   r!   c                 C  s
   || _ d S rM   rH   ©r,   rI   r"   r"   r%   Ú__init__u   s    zParagraph.__init__r   r   r   r8   c                 c  s   | j | j_ | jV  d S rM   )rI   r/   r;   r"   r"   r%   r<   x   s    
zParagraph.__rich_console__N)
r=   r>   r?   rC   rK   r@   rA   r&   rV   r<   r"   r"   r"   r%   rS   k   s   
rS   c                   @  s&   e Zd ZU dZded< dZded< dS )ÚHeadingFormatrG   r   rI   Ú rP   rL   N)r=   r>   r?   rI   r@   rL   r"   r"   r"   r%   rW      s   
rW   c                      s|   e Zd ZU dZdddddddœZded< eddd d	œd
d„ƒZdddœdd„Zdddœ‡ fdd„Z	ddddœdd„Z
‡  ZS )ÚHeadingz
A heading.ÚcenterrG   )Zh1Zh2Zh3Zh4Zh5Zh6z"ClassVar[dict[str, JustifyMethod]]ÚLEVEL_ALIGNr   r   r   c                 C  s
   | |j ƒS rM   )Útagr#   r"   r"   r%   r&   ‘   s    zHeading.creater'   r(   r)   c                 C  s   t ƒ | _| | j¡ d S rM   )r   r/   rJ   rK   r+   r"   r"   r%   r-   •   s    zHeading.on_enterrP   )r\   r!   c                   s    || _ d|› �| _tƒ  ¡  d S )Nú	markdown.)r\   rK   ÚsuperrV   )r,   r\   ©Ú	__class__r"   r%   rV   ™   s    zHeading.__init__r   r   r   r8   c                 c  s*   | j  ¡ }| j | jd¡}||_|V  d S )NrG   )r/   Úcopyr[   Úgetr\   rI   )r,   r9   r:   r/   Zheading_justifyr"   r"   r%   r<   ž   s    
zHeading.__rich_console__)r=   r>   r?   rC   r[   r@   rA   r&   r-   rV   r<   Ú__classcell__r"   r"   r_   r%   rY   …   s   
ú	rY   c                   @  sN   e Zd ZdZdZeddd dœdd„ƒZddd	d
œdd„Zddddœdd„ZdS )Ú	CodeBlockz&A code block with syntax highlighting.zmarkdown.code_blockr   r   r   c                 C  s(   |j pd}| d¡d }| |p d|jƒS )NrX   ú r   r/   )ÚinfoÚ	partitionÚ
code_theme)r$   r   r    Z	node_infoÚ
lexer_namer"   r"   r%   r&   ¬   s    
zCodeBlock.createrP   r(   )ri   Úthemer!   c                 C  s   || _ || _d S rM   )ri   rj   )r,   ri   rj   r"   r"   r%   rV   ²   s    zCodeBlock.__init__r   r   r   r8   c                 c  s.   t | jƒ ¡ }t|| j| jddd�}|V  d S )NTr
   )rj   Ú	word_wrapÚpadding)rP   r/   Úrstripr   ri   rj   )r,   r9   r:   ÚcodeÚsyntaxr"   r"   r%   r<   ¶   s
    ÿzCodeBlock.__rich_console__N)	r=   r>   r?   rC   rK   rA   r&   rV   r<   r"   r"   r"   r%   rd   §   s   rd   c                   @  sF   e Zd ZdZdZddœdd„Zddd	d
œdd„Zddddœdd„ZdS )Ú
BlockQuotezA block quote.zmarkdown.block_quoter(   ©r!   c                 C  s   t ƒ | _d S rM   ©r   Úelements©r,   r"   r"   r%   rV   Å   s    zBlockQuote.__init__r'   r   r3   r4   c                 C  s   | j  |¡ dS ©NF©rs   rN   r6   r"   r"   r%   r7   È   s    zBlockQuote.on_child_closer   r   r   r8   c           	      c  sb   |j |jd d�}|j| j|| jd�}| j}tdƒ}td|ƒ}|D ]}|V  |E d H  |V  qBd S )Né   ©Úwidth©rL   Ú
u   â–Œ )ÚupdateÚ	max_widthÚrender_linesrs   rL   r   )	r,   r9   r:   Úrender_optionsÚlinesrL   r   rl   Úliner"   r"   r%   r<   Ì   s    

zBlockQuote.__rich_console__N)r=   r>   r?   rC   rK   rV   r7   r<   r"   r"   r"   r%   rp   À   s
   rp   c                   @  s&   e Zd ZdZdZddddœdd„Zd	S )
ÚHorizontalRulez%A horizontal rule to divide sections.Fr   r   r   r8   c                 c  s(   |j ddd�}t|dd�V  tƒ V  d S )Nzmarkdown.hrrE   ©Údefaultú-)rL   Ú
characters)Ú	get_styler   r   )r,   r9   r:   rL   r"   r"   r%   r<   ß   s    zHorizontalRule.__rich_console__N)r=   r>   r?   rC   r   r<   r"   r"   r"   r%   r‚   Ú   s   r‚   c                   @  sB   e Zd ZdZddœdd„Zdddd	œd
d„Zddddœdd„ZdS )ÚTableElementz.MarkdownElement corresponding to `table_open`.r(   rq   c                 C  s   d | _ d | _d S rM   )ÚheaderÚbodyrt   r"   r"   r%   rV   ê   s    zTableElement.__init__r'   r   r3   r4   c                 C  s0   t |tƒr|| _nt |tƒr$|| _ntdƒ‚dS )Nz Couldn't process markdown table.F)rO   ÚTableHeaderElementr‰   ÚTableBodyElementrŠ   ÚRuntimeErrorr6   r"   r"   r%   r7   î   s    

zTableElement.on_child_closer   r   r   r8   c                 c  s”   t tjddddd�}| jd urX| jjd urX| jjjD ]"}|j ¡ }| d¡ | 	|¡ q4| j
d urŠ| j
jD ]}dd„ |jD ƒ}|j|Ž  qj|V  d S )NFzmarkdown.table.borderT)r   Úpad_edgerL   Ú	show_edgeÚcollapse_paddingzmarkdown.table.headerc                 S  s   g | ]
}|j ‘qS r"   )Úcontent)Ú.0Úelementr"   r"   r%   Ú
<listcomp>
  ó    z1TableElement.__rich_console__.<locals>.<listcomp>)r	   r   ÚSIMPLEr‰   ÚrowÚcellsr‘   ra   ÚstylizeÚ
add_columnrŠ   ÚrowsÚadd_row)r,   r9   r:   ÚtableÚcolumnÚheadingr—   Zrow_contentr"   r"   r%   r<   ÷   s"    û


zTableElement.__rich_console__N)r=   r>   r?   rC   rV   r7   r<   r"   r"   r"   r%   rˆ   ç   s   	rˆ   c                   @  s0   e Zd ZdZddœdd„Zdddd	œd
d„ZdS )r‹   z@MarkdownElement corresponding to `thead_open` and `thead_close`.r(   rq   c                 C  s
   d | _ d S rM   )r—   rt   r"   r"   r%   rV     s    zTableHeaderElement.__init__r'   r   r3   r4   c                 C  s   t |tƒsJ ‚|| _dS ru   )rO   ÚTableRowElementr—   r6   r"   r"   r%   r7     s    z!TableHeaderElement.on_child_closeN©r=   r>   r?   rC   rV   r7   r"   r"   r"   r%   r‹     s   r‹   c                   @  s0   e Zd ZdZddœdd„Zdddd	œd
d„ZdS )rŒ   z@MarkdownElement corresponding to `tbody_open` and `tbody_close`.r(   rq   c                 C  s
   g | _ d S rM   )r›   rt   r"   r"   r%   rV     s    zTableBodyElement.__init__r'   r   r3   r4   c                 C  s   t |tƒsJ ‚| j |¡ dS ru   )rO   r    r›   rN   r6   r"   r"   r%   r7   "  s    zTableBodyElement.on_child_closeNr¡   r"   r"   r"   r%   rŒ     s   rŒ   c                   @  s0   e Zd ZdZddœdd„Zdddd	œd
d„ZdS )r    z:MarkdownElement corresponding to `tr_open` and `tr_close`.r(   rq   c                 C  s
   g | _ d S rM   )r˜   rt   r"   r"   r%   rV   +  s    zTableRowElement.__init__r'   r   r3   r4   c                 C  s   t |tƒsJ ‚| j |¡ dS ru   )rO   ÚTableDataElementr˜   rN   r6   r"   r"   r%   r7   .  s    zTableRowElement.on_child_closeNr¡   r"   r"   r"   r%   r    (  s   r    c                   @  sH   e Zd ZdZeddddœdd„ƒZdd	d
œdd„Zddd	dœdd„ZdS )r¢   z[MarkdownElement corresponding to `td_open` and `td_close`
    and `th_open` and `th_close`.r   r   r   r   c                 C  s\   t |j d¡ƒpd}d|v r"d}n d|v r0d}nd|v r>d}nd	}|ttƒv sRJ ‚| |d
�S )NrL   rX   ztext-align:rightÚrightztext-align:centerrZ   ztext-align:leftrG   r„   rH   )rP   Úattrsrb   r   r   )r$   r   r    rL   rI   r"   r"   r%   r&   8  s    zTableDataElement.creater   r(   rT   c                 C  s   t d|d�| _|| _d S )NrX   rH   )r   r‘   rI   rU   r"   r"   r%   rV   I  s    zTableDataElement.__init__r'   r   r.   c                 C  s2   t |tƒrt|ƒn|}| |j¡ | j |¡ d S rM   )rO   rP   r   r™   rQ   r‘   Úappend_textr0   r"   r"   r%   r1   M  s    zTableDataElement.on_textN)r=   r>   r?   rC   rA   r&   rV   r1   r"   r"   r"   r%   r¢   4  s
   r¢   c                   @  s\   e Zd ZdZeddd dœdd„ƒZddd	d
œdd„Zddddœdd„Zddddœdd„ZdS )ÚListElementzA list element.r   r   r   c                 C  s   | |j t|j dd¡ƒƒS )NÚstartr
   )ÚtypeÚintr¤   rb   r#   r"   r"   r%   r&   V  s    zListElement.createrP   z
int | Noner(   )Ú	list_typeÚ
list_startr!   c                 C  s   g | _ || _|| _d S rM   )Úitemsrª   r«   )r,   rª   r«   r"   r"   r%   rV   Z  s    zListElement.__init__r'   r   r3   r4   c                 C  s   t |tƒsJ ‚| j |¡ dS ru   )rO   ÚListItemr¬   rN   r6   r"   r"   r%   r7   _  s    zListElement.on_child_closer   r   r   r8   c                 c  s~   | j dkr*| jD ]}| ||¡E d H  qnP| jd u r8dn| j}|t| jƒ }t| jƒD ]"\}}| |||| |¡E d H  qVd S )NÚbullet_list_openr
   )rª   r¬   Úrender_bulletr«   ÚlenÚ	enumerateÚrender_number)r,   r9   r:   ÚitemÚnumberÚlast_numberÚindexr"   r"   r%   r<   d  s    

ÿzListElement.__rich_console__N)	r=   r>   r?   rC   rA   r&   rV   r7   r<   r"   r"   r"   r%   r¦   S  s   r¦   c                   @  s\   e Zd ZdZdZddœdd„Zddd	d
œdd„Zddddœdd„Zddddddœdd„ZdS )r­   zAn item in a list.zmarkdown.itemr(   rq   c                 C  s   t ƒ | _d S rM   rr   rt   r"   r"   r%   rV   x  s    zListItem.__init__r'   r   r3   r4   c                 C  s   | j  |¡ dS ru   rv   r6   r"   r"   r%   r7   {  s    zListItem.on_child_closer   r   r   r8   c                 c  s„   |j |jd d�}|j| j|| jd�}|jddd�}td|ƒ}td|ƒ}td	ƒ}t|ƒD ]&\}	}
|	rh|n|V  |
E d H  |V  qXd S )
Né   rx   rz   zmarkdown.item.bulletrE   rƒ   u    â€¢ z   r{   )r|   r}   r~   rs   rL   r‡   r   r   )r,   r9   r:   r   r€   Zbullet_styleZbulletrl   r   Úfirstr�   r"   r"   r%   r¯     s    


zListItem.render_bulletr©   )r9   r:   r´   rµ   r!   c                 c  s¨   t t|ƒƒd }|j|j| d�}|j| j|| jd�}|jddd�}tdƒ}	td| |ƒ}
t|›  	|d	 ¡d |ƒ}t
|ƒD ]&\}}|rŒ|n|
V  |E d H  |	V  q|d S )
Né   rx   rz   zmarkdown.item.numberrE   rƒ   r{   re   r
   )r°   rP   r|   r}   r~   rs   rL   r‡   r   Úrjustr   )r,   r9   r:   r´   rµ   Znumber_widthr   r€   Únumber_styler   rl   Znumeralr¸   r�   r"   r"   r%   r²   Œ  s    
zListItem.render_numberN)	r=   r>   r?   rC   rK   rV   r7   r¯   r²   r"   r"   r"   r%   r­   s  s   r­   c                   @  s2   e Zd Zeddddœdd„ƒZdddœd	d
„ZdS )ÚLinkr   r   r   r   c                 C  s   |j  dd¡}| |jt|ƒƒS )NÚhrefú#)r¤   rb   r‘   rP   )r$   r   r    Úurlr"   r"   r%   r&   ž  s    zLink.createrP   )r/   r½   c                 C  s   t |ƒ| _|| _d S rM   )r   r/   r½   )r,   r/   r½   r"   r"   r%   rV   £  s    
zLink.__init__N)r=   r>   r?   rA   r&   rV   r"   r"   r"   r%   r¼   �  s   r¼   c                      sj   e Zd ZdZdZeddddœdd„ƒZd	d
ddœ‡ fdd„Zdddœ‡ fdd„Zddddœdd„Z	‡  Z
S )Ú	ImageItemz#Renders a placeholder for an image.Fr   r   r   r   c                 C  s   | t |j dd¡ƒ|jƒS )zñFactory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Any): A token from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
        ÚsrcrX   )rP   r¤   rb   Ú
hyperlinksr#   r"   r"   r%   r&   ­  s    zImageItem.createrP   r3   r(   )ÚdestinationrÂ   r!   c                   s    || _ || _d | _tƒ  ¡  d S rM   )rÃ   rÂ   Úlinkr^   rV   )r,   rÃ   rÂ   r_   r"   r%   rV   º  s    zImageItem.__init__r'   r)   c                   s&   |j j| _tdd�| _tƒ  |¡ d S rF   )rQ   rÄ   r   r/   r^   r-   r+   r_   r"   r%   r-   À  s    
zImageItem.on_enterr   r   r   r8   c                 c  sd   t | jp| jpd d�}| jp6t| j d¡ dd¡d ƒ}| jrH| |¡ tj	d|ddd�}|V  d S )	N©rÄ   ú/r
   éÿÿÿÿu   ðŸŒ† re   rX   )Úend)
r   rÄ   rÃ   r/   r   ÚstripÚrsplitrÂ   r™   Úassemble)r,   r9   r:   Ú
link_styleÚtitler/   r"   r"   r%   r<   Å  s    "
zImageItem.__rich_console__)r=   r>   r?   rC   r   rA   r&   rV   r-   r<   rc   r"   r"   r_   r%   rÀ   ¨  s   rÀ   c                   @  sl   e Zd ZdZddddddd	d
œdd„Zeddœdd„ƒZddd	dœdd„Zdddœdd„Zddœdd„Z	dS )r'   z!Manages the console render state.NÚmonokair   r   r   ú
str | NonerP   r(   )r9   r:   rL   Úinline_code_lexerÚinline_code_themer!   c                 C  s@   || _ || _t|ƒ| _tƒ | _d | _|d ur<td||d�| _d S )NrX   )rj   )r9   r:   r   Ústyle_stackr   ÚstackÚ_syntaxr   )r,   r9   r:   rL   rÐ   rÑ   r"   r"   r%   rV   Ó  s    
zMarkdownContext.__init__rq   c                 C  s   | j jS )z>Current style which is the product of all styles on the stack.)rÒ   Úcurrentrt   r"   r"   r%   rQ   ä  s    zMarkdownContext.current_style)r/   Ú	node_typer!   c                 C  sZ   |dv rF| j durF| j  |¡}| ¡  | jj | tj|| jj	d�¡ n| jj | |¡ dS )z#Called when the parser visits text.>   ÚfenceZcode_inlineNrz   )
rÔ   Ú	highlightrm   rÓ   Útopr1   r   rË   rÒ   rÕ   )r,   r/   rÖ   Úhighlight_textr"   r"   r%   r1   é  s    ÿzMarkdownContext.on_textústr | Style)rK   r!   c                 C  s"   | j j|dd�}| j |¡ | jS )zEnter a style context.rE   rƒ   )r9   r‡   rÒ   ÚpushrQ   )r,   rK   rL   r"   r"   r%   rJ   ô  s    zMarkdownContext.enter_stylec                 C  s   | j  ¡ }|S )zLeave a style context.)rÒ   Úpop)r,   rL   r"   r"   r%   rR   ú  s    
zMarkdownContext.leave_style)NrÎ   )
r=   r>   r?   rC   rV   ÚpropertyrQ   r1   rJ   rR   r"   r"   r"   r%   r'   Ð  s     úr'   c                   @  sˆ   e Zd ZU dZeeeeeee	e	e
eeeeeeedœZded< h d£Zdd
d
dddddddœdd„Zdddœdd„Zddddœdd„ZdS )r   aÿ  A Markdown renderable.

    Args:
        markup (str): A string containing markdown.
        code_theme (str, optional): Pygments theme for code blocks. Defaults to "monokai". See https://pygments.org/styles/ for code themes.
        justify (JustifyMethod, optional): Justify value for paragraphs. Defaults to None.
        style (Union[str, Style], optional): Optional style to apply to markdown.
        hyperlinks (bool, optional): Enable hyperlinks. Defaults to ``True``.
        inline_code_lexer: (str, optional): Lexer to use if inline code highlighting is
            enabled. Defaults to None.
        inline_code_theme: (Optional[str], optional): Pygments theme for inline code
            highlighting, or None for no highlighting. Defaults to None.
    )Zparagraph_openZheading_openr×   Ú
code_blockZblockquote_openÚhrr®   Zordered_list_openZlist_item_openÚimageZ
table_openZ
tbody_openZ
thead_openZtr_openZtd_openZth_openz*ClassVar[dict[str, type[MarkdownElement]]]rs   >   ÚstrongZemÚsrn   rÎ   NrE   TrP   zJustifyMethod | NonerÛ   r3   rÏ   r(   )Úmarkuprh   rI   rL   rÂ   rÐ   rÑ   r!   c           	      C  sP   t ƒ  d¡ d¡}|| _| |¡| _|| _|| _|| _|| _|| _	|pH|| _
d S )NZstrikethroughr�   )r   Úenablerä   ÚparseÚparsedrh   rI   rL   rÂ   rÐ   rÑ   )	r,   rä   rh   rI   rL   rÂ   rÐ   rÑ   Úparserr"   r"   r%   rV   $  s    
zMarkdown.__init__zIterable[Token])Útokensr!   c                 c  sJ   |D ]@}|j dk}|jdk}|jr>|s>|s>|  |j¡E dH  q|V  qdS )zFlattens the token stream.r×   ZimgN)r¨   r\   ÚchildrenÚ_flatten_tokens)r,   ré   r    Zis_fenceZis_imager"   r"   r%   rë   8  s    

zMarkdown._flatten_tokensr   r   r   r8   c                 c  sˆ  |j | jdd�}|jdd�}t|||| j| jd�}| j}| j}d}t 	¡ }|  
|¡D �],}	|	j}
|	j}|	jdk}|	jdk}|	jd	k}|
d
krœ| |	j|
¡ qT|
dkr²| d|
¡ qT|
dkrÈ| d|
¡ qT|
dk�r*t|	j dd¡ƒ}| j�r|j ddd�}|t|d�7 }| |¡ n|j t | |	¡¡ qT|
dk�rØ| j�rF| ¡  n�|j ¡ }t|tƒ�s`J ‚|j ddd�}| |¡ | |jj|
¡ | ¡  | d|
¡ |j ddd�}| |¡ | |j|
¡ | ¡  | d|
¡ qT||v �rN|
dk�rN|
dk�rN|�r| d|› �¡ n>|�r| ¡  n.| d|› �¡ |	j�rD| |	j|
¡ | ¡  qT| j  |	j¡�p`t!}| | |	¡}|�sz|�r�|j |¡ | "|¡ |�rê|j ¡ }|j �pÀ|j�oÀ|jj# $||¡}|�rh|�rÔ|V  | %||j&¡E dH  n~|�rh|j ¡  |	j}|du�r| ||¡ |j �p6|j�o6|jj# $||¡}|�rh|�rT|
dk�rT|V  | %||j&¡E dH  |�sr|rT| '|¡ |j(}qTdS )zRender markdown to the console.rE   rƒ   N)Úheight)rÐ   rÑ   Fr
   rÇ   r   r/   Z	hardbreakr{   Z	softbreakre   Z	link_openr½   rX   zmarkdown.link_urlrÅ   Z
link_closezmarkdown.linkz (ú)r×   rß   r]   Úinline))r‡   rL   r|   r'   rÐ   rÑ   rç   Úinlinesr   r�   rë   r¨   r\   Znestingr1   r‘   rP   r¤   rb   rÂ   r   rJ   rÓ   rÜ   r¼   r&   rR   rÝ   rO   r/   Úplainr½   rs   rB   r-   rÙ   r7   Úrenderr:   r2   r   )r,   r9   r:   rL   r*   ré   Zinline_style_tagsr   Z_new_line_segmentr    rÖ   r\   ZenteringZexitingZself_closingr½   rÌ   r“   Zlink_url_styleZelement_classZshould_renderr/   r"   r"   r%   r<   B  s¼    û







ÿ
ÿþý




þ


ý

zMarkdown.__rich_console__)rÎ   NrE   TNN)r=   r>   r?   rC   rS   rY   rd   rp   r‚   r¦   r­   rÀ   rˆ   rŒ   r‹   r    r¢   rs   r@   rï   rV   rë   r<   r"   r"   r"   r%   r      s8   
ð      ø
r   Ú__main__z(Render Markdown to the console with Rich)ÚdescriptionÚpathÚPATHz%path to markdown file, or - for stdin)ÚmetavarÚhelpz-cz--force-colorÚforce_colorÚ
store_truezforce color for non-terminals)ÚdestÚactionr„   r÷   z-tz--code-themerh   rÎ   zpygments code theme)rú   r„   r÷   z-iz--inline-code-lexerrÐ   z-yz--hyperlinksrÂ   zenable hyperlinks)rú   rû   r÷   z-wz--widthry   z*width of output (default will auto-detect))r¨   rú   r„   r÷   z-jz	--justifyrI   zenable full text justifyz-pz--pageÚpagezuse pager to scroll output)r   r…   zutf-8)ÚencodingÚfullrG   )rI   rh   rÂ   rÐ   )ÚfileÚforce_terminalry   T)r   ry   Úrecord)\Ú
__future__r   ÚsysÚdataclassesr   Útypingr   r   r   Zmarkdown_itr   Zmarkdown_it.tokenr   Z
rich.tabler	   rX   r   Ú_loopr   Ú_stackr   r9   r   r   r   r   Ú
containersr   Újupyterr   Úruler   Úsegmentr   rL   r   r   ro   r   r/   r   r   r   rB   rD   rS   rW   rY   rd   rp   r‚   rˆ   r‹   rŒ   r    r¢   r¦   r­   r¼   rÀ   r'   r   r=   ÚargparseÚArgumentParserrè   Úadd_argumentr©   Ú
parse_argsÚargsZrich.consolerô   ÚstdinÚreadZmarkdown_bodyÚopenZmarkdown_filerI   rh   rÂ   rÐ   r   rü   ÚioÚpydocÚStringIOZfileiorø   ry   ÚprintÚpagerÚgetvaluer"   r"   r"   r%   Ú<module>   sþ   9	") *(0 ;
ÿýúûûûúûû(û
ÿ

ÿ