
    /Vh                        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. 
admonitioni   N)registerExtensionparserblockprocessorsregisterAdmonitionProcessor)selfmds     N/home/dcms/DCMS/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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 )
zGet 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"jj0C0CDOE8#'D "#DE8++..(?gkkU2gkk'26N6S6STXTbTb6cgi6iG 0JF('E,<,<S4??=RUV=V,W*z~~AS/S
 #nnZ8G<C<O!8UYJ
 "$//"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   r6   r7   s      r   testzAdmonitionProcessor.test{   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   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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   matchrV   rW   s       r   rJ   z'AdmonitionProcessor.get_class_and_title   s    {{1~++-u{{1~u""3.= KKQ'*557E
 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	TB

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   