
    c                     z    d Z ddlmZ ddlmZ ddlmc mZ ddlZ G d de          Z	 G d	 d
e          Z
d ZdS )a  
Admonition extension for Python-Markdown
========================================

Adds rST-style admonitions. Inspired by [rST][] feature with the same name.

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

See <https://Python-Markdown.github.io/extensions/admonition>
for documentation.

Original code Copyright [Tiago Serafim](https://www.tiagoserafim.com/).

All changes Copyright The Python Markdown Project

License: [BSD](https://opensource.org/licenses/bsd-license.php)

   )	Extension   )BlockProcessor    Nc                       e Zd ZdZd ZdS )AdmonitionExtensionz+ Admonition extension for Python-Markdown. c                     |                     |            |j        j                            t	          |j                  dd           dS )z& Add Admonition to Markdown instance. 
admonitioni   N)registerExtensionparserblockprocessorsregisterAdmonitionProcessor)selfmds     >lib/python3.11/site-packages/markdown/extensions/admonition.pyextendMarkdownz"AdmonitionExtension.extendMarkdown   sE    
T"""
	!**+>ry+I+I<Y\]]]]]    N)__name__
__module____qualname____doc__r    r   r   r   r      s.        55^ ^ ^ ^ ^r   r   c                   ~     e Zd ZdZdZ ej        d          Z ej        d          Z fdZ	d Z
d Zd Zd	 Z xZS )
r   r
   zadmonition-titlez<(?:^|\n)!!! ?([\w\-]+(?: +[\w\-]+)*)(?: +"(.*?)")? *(?:\n|$)z  +c                 f    t                                          |           d| _        d| _        dS )zInitialization.Nr   )super__init__current_siblingcontent_indention)r   r   	__class__s     r   r   zAdmonitionProcessor.__init__+   s3     	   #!"r   c                    |}d}| j         8| j         }|                     || j                  \  }}d| _         d| _        |||fS |                     |          }|2|                    dd                              | j                  dk    rd}n|                     |          }d}|ry|rs|                    d| j        z  dz            rS|rQ|j	        dv rH|                     |          }|r|                     |          nd}|| j        d         }|| j        z  }nd}|y|                    d| j        z            sd}|1|| j        z  }|                     ||          \  }}|| _         || _        |||fS )	zGet sibling admonition.

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

         Nr   class r   )uloldl)
r   detabcontent_indent	lastChildgetfind	CLASSNAME
startswith
tab_lengthtag)r   parentblock	old_blockthe_restsibling
last_childindents           r   parse_contentz!AdmonitionProcessor.parse_content3   s    	  	,*G"jj0CDDOE8#'D "#DE8++..(( !	-gkk'266;;DNKKrQ !	-GG 00JF && % 0 0t1F1J K K&&#->5G#G& #nnZ88G<C!M!8!8!8J
 "$/"2"23Edo-FF!%J#  && ##C$/$9::  -$/)"&**Y"?"?x'.$&,#x''r   c                 v    | j                             |          rdS |                     ||          d         d uS )NTr   )REsearchr:   )r   r3   r4   s      r   testzAdmonitionProcessor.testm   s>    7>>%   	D4%%fe44Q7tCCr   c                    |                     d          }| j                            |          }|r|                                dk    r6| j                            ||d |                                         g           ||                                d          }|                     |          \  }}n|                     ||          \  }}}|r| 	                    |          \  }}t          j        |d          }	|	                    dd                    | j        |                     |r7t          j        |	d          }
||
_        |
                    d| j                   n<|j        dv r1|j        r*|j        }d|_        t          j        |d          }
||
_        |}	| j                            |	|           |r|                    d|           d S d S )Nr   divr$   z{} {}p)liddr#   )popr<   r=   startr   parseBlocksendr*   r:   get_class_and_titleetree
SubElementsetformatr/   textCLASSNAME_TITLEr2   
parseChunkinsert)r   r3   blocksr4   mtheRestr7   klasstitler@   rA   rM   s               r   runzAdmonitionProcessor.runt   s   

1GNN5!! 	Hwwyy1} E''z		z1B0CDDD!%%''((OE!ZZ..NE77&*&8&8&G&G#GUG 	33A66LE5"6511CGGGW^^DNEBBCCC 5$S#..gt3444 {l* w| |!$Wc22CsE*** 	& MM!W%%%%%		& 	&r   c                 *   |                     d                                          |                     d          }}| j                            d|          }|/|                    dd          d                                         }n|dk    rd }||fS )Nr   r   r&   r   r#   )grouplower	RE_SPACESsubsplit
capitalize)r   matchrT   rU   s       r   rH   z'AdmonitionProcessor.get_class_and_title   s    {{1~~++--u{{1~~u""3.. 	 KKQ''*5577EEb[ 	 Ee|r   )r   r   r   r/   rN   recompiler<   rZ   r   r:   r>   rV   rH   __classcell__)r!   s   @r   r   r   $   s        I(O	S	T	TB
5!!I# # # # #8( 8( 8(tD D D$& $& $&L      r   r   c                      t          di | S )Nr   )r   )kwargss    r   makeExtensionrd      s    (((((r   )r   r#   r   r   r   xml.etree.ElementTreerI   ElementTreer_   r   r   rd   r   r   r   <module>rg      s    &       , , , , , , % % % % % % % % % 				^ ^ ^ ^ ^) ^ ^ ^B B B B B. B B BJ) ) ) ) )r   