
    -Be                     l    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y)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y)AdmonitionExtensionz+ Admonition extension for Python-Markdown. c                     |j                  |        |j                  j                  j                  t	        |j                        dd       y)z& Add Admonition to Markdown instance. 
admonitioni   N)registerExtensionparserblockprocessorsregisterAdmonitionProcessor)selfmds     >lib/python3.12/site-packages/markdown/extensions/admonition.pyextendMarkdownz"AdmonitionExtension.extendMarkdown   s7    
T"
		!!**+>ryy+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 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                 @    t         |   |       d| _        d| _        y)zInitialization.Nr   )super__init__current_siblingcontent_indention)r   r   	__class__s     r   r   zAdmonitionProcessor.__init__+   s"     	 #!"r   c                    |}d}| j                   >| j                   }| j                  || j                        \  }}d| _         d| _        |||fS | j                  |      }|.|j	                  dd      j                  | j                        dk(  rd}n| j                  |      }d}|r}|rv|j                  d| j                  z  dz        rU|rS|j                  dv rE| j                  |      }|r| j                  |      nd}|| j                  d }|| j                  z  }nd}|r}|j                  d| j                  z        sd}|2|| j                  z  }| j                  ||      \  }}|| _         || _        |||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0C0CDOE8#'D "#DE8++..(?gkk'26;;DNNKrQG 0JF 0 0t1F1J K:>>5G#G
 #nnZ8G<C!8J
 "$//"23Edoo-F!%J# & ##C$//$9:"$//)"&**Y"?x'.$&,#x''r   c                 h    | j                   j                  |      ry| j                  ||      d   d uS )NTr   )REsearchr:   )r   r3   r4   s      r   testzAdmonitionProcessor.testm   s2    77>>% %%fe4Q7t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                  |             |rt        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   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   su   

1GGNN5!wwy1}''z	1B0CD!%%'(OE!ZZ.NE7&*&8&8&G#GUG33A6LE5""651CGGGW^^DNNEBC$$S#.gt334 {{l*w||||!$$Wc2CsE* MM!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   matchrT   rU   s       r   rH   z'AdmonitionProcessor.get_class_and_title   s    {{1~++-u{{1~u""3.= KKQ'*557E
 e|	 b[ Ee|r   )r   r   r   r/   rN   recompiler<   rZ   r   r:   r>   rV   rH   __classcell__)r!   s   @r   r   r   $   sJ    I(O	S	TB

5!I#8(t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J)r   