
    Mh                     "   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rddlmZmZ ddlmZ ddlmZ d	Z e j        e          Zd
ddee         dddefdZd
ddddedeeeef                  dee         f
dZdddededefdZ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                 0   |                     d          dd         }|                    d          }g }|D ]5}|                    d          \  }}|                    d|d|id           6|                                }	t                              |j        |	          }
|
r+|D ]}|                    |           t          | |
|          S |	t          |j                  k     rt          | ||	|          }|r|S |D ]}|                    |           |	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_poss                T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mistune/plugins/ruby.pyr'   r'      s7   771::adDJJsOOEF H HCBvbD":FFGGGGeeggG	733J 5 	$ 	$Cs####&*e444 UY#FE7FCC 	O    3N    posr,   c                 2   |j         |         }|dk    r9t          |j         |dz             \  }}|r|                    d||d           |S n|dk    rt          |j         |dz             \  }}|r|r|j        d         }t          |          }	|                    |	          }
|
r8|
d         |
                    d          d	}|                    d||d           n8|D ]}|                    |           |                    d
d|z   dz   d           |S d S )Nr   r   link)r   childrenr   [	ref_linksurltitle)r;   r<   r*   ])r   r   )r%   r
   r&   r   envr   get)r   r   r5   r,   cr   r2   labelr:   keyr>   r1   s               r3   r)   r)   ,   s    		#ACxx$UYa88x 	" &"    O	 
c*59cAg>>x 	X 		+.I--C--$$C  #E
SWWW5E5EFF"" &$*!&     " , ,C&&s++++"" &"U{S0    O4r4   rendererr   r*   r   c                     d|z   dz   |z   dz   S )Nz<ruby>z<rt>z</rt></ruby> )rC   r*   r   s      r3   render_rubyrF   Z   s    d?V#b(>99r4   mdr   c                     | j                             dt          t          d           | j        r2| 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   r7   )beforehtmlN)r   registerRUBY_PATTERNr'   rC   NAMErF   )rG   s    r3   r   r   ^   sj      Iv|ZGGG	{ 2r{'611
V[111112 211r4   )rG   r   r   N)retypingr   r   r   r   r   r   helpersr
   r   utilr   corer   r   inline_parserr   markdownr   rL   compiler#   strintr'   r)   rF   r   rE   r4   r3   <module>rX      s   				 B B B B B B B B B B B B B B B B 2 2 2 2 2 2 2 2       $00000000,,,,,,###### )2:l##~ %* ] s    6++#0+7:+DHcSVhDX+c]+ + + +\:. : : : : : : :2 2 2 2 2 2r4   