Ë
    Áj¦  ã                  ó”   — d Z ddlmZ ddlmZ ddlmZ ddlmc m	Z ddl
Z
ddlmZ erdd	lmZ  G d
„ de«      Z G d„ de«      Zd„ Zy)a  
Adds rST-style admonitions to Python-Markdown.
Inspired by [rST][] feature with the same name.

[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions

See the [documentation](https://Python-Markdown.github.io/extensions/admonition)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚBlockProcessorN)ÚTYPE_CHECKING)Úblockparserc                  ó   — e Zd ZdZd„ Zy)ÚAdmonitionExtensionz+ Admonition extension for Python-Markdown. c                óš   — |j                  | «       |j                  j                  j                  t	        |j                  «      dd«       y)z& Add Admonition to Markdown instance. Ú
admonitionéi   N)ÚregisterExtensionÚparserÚblockprocessorsÚregisterÚAdmonitionProcessor)ÚselfÚmds     úQ/var/www/html/venv/lib/python3.12/site-packages/markdown/extensions/admonition.pyÚextendMarkdownz"AdmonitionExtension.extendMarkdown+   s7   € à
×Ñ˜TÔ"à
�	‰	×!Ñ!×*Ñ*Ô+>¸r¿y¹yÓ+IÈ<ÐY\Õ]ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r   (   s   „ Ù5ó^r   r   c                  ó�   ‡ — e Zd ZdZdZ ej                  d«      Z ej                  d«      Zd
ˆ fd„Z	dd„Z
dd„Zdd„Zdd	„Zˆ xZS )r   r   zadmonition-titlez<(?:^|\n)!!! ?([\w\-]+(?: +[\w\-]+)*)(?: +"(.*?)")? *(?:\n|$)z  +c                ó@   •— t         ‰| �  |«       d| _        d| _        y)zInitialization.Nr   )ÚsuperÚ__init__Úcurrent_siblingÚcontent_indent)r   r   Ú	__class__s     €r   r!   zAdmonitionProcessor.__init__9   s"   ø€ ô 	‰Ñ˜Ô à59ˆÔØˆÕr   c                ó  — |}d}| j                   �>| j                   }| j                  || j                  «      \  }}d| _         d| _        |||fS | j                  |«      }|�=|j                  dk7  s.|j                  dd«      j                  | j                  «      dk(  rd}næ| j                  |«      }d}|�}|�v|j                  d| j                  z  dz  «      rU|�S|j                  d	v rE| j                  |«      }|�| j                  |«      nd}|| j                  d }|| j                  z  }nd}|�Œ}|j                  d| j                  z  «      sd}|�2|| j                  z  }| j                  ||«      \  }}|| _         || _        |||fS )
z‰Get sibling admonition.

        Retrieve the appropriate sibling element. This can get tricky when
        dealing with lists.

        Ú Nr   ÚdivÚclasséÿÿÿÿÚ r   )ÚulÚolÚdl)
r"   Údetabr#   Ú	lastChildÚtagÚgetÚfindÚ	CLASSNAMEÚ
startswithÚ
tab_length)r   ÚparentÚblockÚ	old_blockÚthe_restÚsiblingÚ
last_childÚindents           r   Úparse_contentz!AdmonitionProcessor.parse_contentA   s¬  € ð ˆ	Øˆð ×ÑÐ+Ø×*Ñ*ˆGØ"Ÿj™j¨°×0CÑ0CÓD‰OˆE�8Ø#'ˆDÔ Ø"#ˆDÔØ˜E 8Ð+Ð+à—.‘. Ó(ˆàˆ?˜gŸk™k¨UÒ2°g·k±kÀ'È2Ó6N×6SÑ6SÐTX×TbÑTbÓ6cÐgiÒ6iØ‰Gð Ÿ™¨Ó0ˆJØˆFØÐ(àÐ'¨E×,<Ñ,<¸SÀ4Ç?Á?Ñ=RÐUVÑ=VÔ,WØÐ*¨z¯~©~ÐASÑ/Sð
 #Ÿn™n¨ZÓ8�GØ<CÐ<O §¡°Ô!8ÐUY�Jð
 " $§/¡/Ð"2Ð3�EØ˜dŸo™oÑ-‘Fà!%�Jð# Ñ(ð& ×#Ñ# C¨$¯/©/Ñ$9Ô:Ø�àÐ"Ø˜$Ÿ/™/Ñ)�Ø"&§*¡*¨Y¸Ó"?‘��xØ'.�Ô$Ø&,�Ô#à˜˜xÐ'Ð'r   c                óh   — | j                   j                  |«      ry| j                  ||«      d   d uS )NTr   )ÚREÚsearchr=   )r   r6   r7   s      r   ÚtestzAdmonitionProcessor.test{   s2   € à�7‰7�>‰>˜%Ô Øà×%Ñ% f¨eÓ4°QÑ7¸tÐCÐCr   c                ó€  — |j                  d«      }| j                  j                  |«      }|ri|j                  «       dkD  r.| j                  j                  ||d |j                  «        g«       ||j                  «       d  }| j                  |«      \  }}n| j                  ||«      \  }}}|r’| j                  |«      \  }}t        j                  |d«      }	|	j                  ddj                  | j                  |«      «       |r†t        j                  |	d«      }
||
_        |
j                  d| j                   «       nLj"                  dv r<|j                  r0|j                  }d|_        t        j                  |d«      }
||
_        |}	| j                  j%                  |	|«       |r|j'                  d|«       y y )Nr   r'   r(   z{} {}Úp)ÚliÚddr&   )Úpopr?   r@   Ústartr   ÚparseBlocksÚendr.   r=   Úget_class_and_titleÚetreeÚ
SubElementÚsetÚformatr3   ÚtextÚCLASSNAME_TITLEr0   Ú
parseChunkÚinsert)r   r6   Úblocksr7   ÚmÚtheRestr:   ÚklassÚtitler'   rC   rO   s               r   ÚrunzAdmonitionProcessor.run‚   su  € Ø—
‘
˜1“ˆØ�G‰G�N‰N˜5Ó!ˆáØ�w‰w‹y˜1Š}Ø—‘×'Ñ'¨°°z¸¿¹»	Ð1BÐ0CÔDØ˜!Ÿ%™%›'˜(�OˆEØ!ŸZ™Z¨Ó.‰NˆE‘7à&*×&8Ñ&8¸ÀÓ&GÑ#ˆG�U˜GáØ×3Ñ3°AÓ6‰LˆE�5Ü×"Ñ" 6¨5Ó1ˆCØ�G‰G�G˜WŸ^™^¨D¯N©N¸EÓBÔCÙÜ×$Ñ$ S¨#Ó.�Ø�”Ø—‘�g˜t×3Ñ3Õ4ð �{‰{˜lÑ*¨w¯|ª|Ø—|‘|�Ø!�”Ü×$Ñ$ W¨cÓ2�Ø�”àˆCà�‰×Ñ˜s EÔ*áð �M‰M˜!˜WÕ%ð	 r   c                ó  — |j                  d«      j                  «       |j                  d«      }}| j                  j                  d|«      }|€'|j	                  dd«      d   j                  «       }||fS |dk(  rd }||fS )Nr   r   r*   r   r&   )ÚgroupÚlowerÚ	RE_SPACESÚsubÚsplitÚ
capitalize)r   ÚmatchrV   rW   s       r   rJ   z'AdmonitionProcessor.get_class_and_title¨   s…   € Ø—{‘{ 1“~×+Ñ+Ó-¨u¯{©{¸1«~ˆuˆØ—‘×"Ñ" 3¨Ó.ˆØˆ=ð —K‘K  QÓ'¨Ñ*×5Ñ5Ó7ˆEð
 �eˆ|Ðð	 �bŠ[ð ˆEØ�eˆ|Ðr   )r   zblockparser.BlockParser)r6   úetree.Elementr7   ÚstrÚreturnz%tuple[etree.Element | None, str, str])r6   ra   r7   rb   rc   Úbool)r6   ra   rS   z	list[str]rc   ÚNone)r`   zre.Match[str]rc   ztuple[str, str | None])r   r   r   r3   rP   ÚreÚcompiler?   r\   r!   r=   rA   rX   rJ   Ú__classcell__)r$   s   @r   r   r   2   sJ   ø„ à€IØ(€OØ	ˆ�‰ÐSÓ	T€BØ�—
‘
˜5Ó!€Iõ ó8(ótDó$&÷Lr   r   c                 ó   — t        di | ¤ŽS )Nr   )r   )Úkwargss    r   ÚmakeExtensionrk   ·   s   € ÜÑ( Ñ(Ð(r   )r   Ú
__future__r   r&   r   r   r   Úxml.etree.ElementTreerK   ÚElementTreerf   Útypingr   Úmarkdownr	   r   r   rk   r   r   r   Ú<module>rq      sI   ðñ$õ #å Ý ,ß %Ð %Û 	Ý  áÝ$ô^˜)ô ^ôB˜.ô BóJ)r   