
    Ph                        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y)    N)TYPE_CHECKINGAnyDictListMatchOptional   )
parse_linkparse_link_label)unikey)BaseRendererInlineState)InlineParser)Markdownz\[(?:\w+\([\w ]+\))+\]inliner   mstater   returnc                    |j                  d      dd }|j                  d      }g }|D ]-  }|j                  d      \  }}|j                  d|d|id       / |j                         }	t        j                  |j                  |	      }
|
r%|D ]  }|j                  |        t        | |
|      S |	t        |j                        k  rt        | ||	|      }|r|S |D ]  }|j                  |        |	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                N/var/www/html/saasai/venv/lib/python3.12/site-packages/mistune/plugins/ruby.pyr'   r'      s    771:aDJJsOEFCBvbD":FG  eegG		73JCs# &*e44 UYY#FE7FCO3 N    posr,   c                     |j                   |   }|dk(  r6t        |j                   |dz         \  }}|r|j                  d||d       |S y |dk(  rt        |j                   |dz         \  }}|r|r|j                  d   }t        |      }	|j                  |	      }
|
r.|
d   |
j                  d      d	}|j                  d||d       |S |D ]  }|j                  |        |j                  d
d|z   dz   d       |S y )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Cx$UYYa8x" &" O8 5 
c*599cAg>xX		+.I-C--$C #E
SWWW5EF"" &$*!&  O "C&&s+ """ &"U{S0 Or4   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   c                     | j                   j                  dt        t        d       | j                  r;| j                  j
                  dk(  r!| j                  j                  dt               yyy)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   )mds    r3   r   r   ^   sR      IIv|ZG	{{r{{''61
V[1 2{r4   )rM   r   r   N)retypingr   r   r   r   r   r   helpersr
   r   utilr   corer   r   inline_parserr   markdownr   rK   compiler#   strintr'   r)   rF   r   rE   r4   r3   <module>rX      s    	 B B 2 0,# )2::l#~ %* ] s 6++#0+7:+DHcSVhDX+c]+\:. : : : :2r4   