o
    ^i                     @   s   d dl Z d dlmZmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZ er8ddlmZmZ ddlmZ ddlmZ d	Ze eZd
ddee dddefddZd
ddddedeeeef  dee f
ddZdddededefddZd ddZdS )!    N)TYPE_CHECKINGAnyDictListMatchOptional   )
parse_linkparse_link_label)unikey)BaseRendererInlineState)InlineParser)Markdownz\[(?:\w+\([\w ]+\))+\]inliner   mstater   returnc                 C   s   | ddd }|d}g }|D ]}|d\}}|d|d|id q| }	t|j|	}
|
rD|D ]}|| q6t| |
|S |	t	|jk rVt
| ||	|}|rV|S |D ]}|| qX|	S )	Nr      )(rubyrt)typerawattrs)groupsplitappendend_ruby_rematchsrcappend_token
parse_rubylen_parse_ruby_link)r   r   r   textitemstokensitemrbr   end_pos
next_matchtoklink_pos r1   O/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/plugins/ruby.pyr%      s&   
r%   posr*   c                 C   s   |j | }|dkr"t|j |d \}}|r |d||d |S d S |dkrqt|j |d \}}|rq|rq|jd }t|}	||	}
|
rY|
d |
dd	}|d||d |S |D ]}|| q[|d
d| d d |S d S )Nr   r   link)r   childrenr   [	ref_linksurltitle)r8   r9   r(   ])r   r   )r#   r	   r$   r
   envr   get)r   r   r3   r*   cr   r0   labelr7   keyr;   r/   r1   r1   r2   r'   ,   sH   



r'   rendererr   r(   r   c                 C   s   d| d | d S )Nz<ruby>z<rt>z</rt></ruby>r1   )r@   r(   r   r1   r1   r2   render_rubyZ   s   rA   mdr   c                 C   s@   | j jdttdd | jr| jjdkr| jdt dS dS dS )uq  A mistune plugin to support ``<ruby>`` tag. The syntax is defined
    at https://lepture.com/en/2022/markdown-ruby-markup:

    .. code-block:: text

        [漢字(ㄏㄢˋㄗˋ)]
        [漢(ㄏㄢˋ)字(ㄗˋ)]

        [漢字(ㄏㄢˋㄗˋ)][link]
        [漢字(ㄏㄢˋㄗˋ)](/url "title")

        [link]: /url "title"

    :param md: Markdown instance
    r   r4   )beforehtmlN)r   registerRUBY_PATTERNr%   r@   NAMErA   )rB   r1   r1   r2   r   ^   s   r   )rB   r   r   N)retypingr   r   r   r   r   r   helpersr	   r
   utilr   corer   r   inline_parserr   markdownr   rF   compiler!   strintr%   r'   rA   r   r1   r1   r1   r2   <module>   s0     

.