
    $g                        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dS )a  
Adds rST-style admonitions. 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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     ^/var/www/html/netbox-4.1.3/venv/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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  +r   blockparser.BlockParserc                f    t                                          |           d| _        d| _        dS )zInitialization.Nr   )super__init__current_siblingcontent_indent)r   r   	__class__s     r   r"   zAdmonitionProcessor.__init__8   s3     	   59r   parentetree.Elementblockstrreturn%tuple[etree.Element | None, str, str]c                   |}d}| j         8| j         }|                     || j                  \  }}d| _         d| _        |||fS |                     |          }|=|j        dk    s2|                    dd                              | j                  dk    rd}n|                     |          }d}|y|s|                    d| j	        z  dz            rS|Q|j        d	v rH|                     |          }||                     |          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   divclass r   )uloldl)
r#   detabr$   	lastChildtaggetfind	CLASSNAME
startswith
tab_length)r   r&   r(   	old_blockthe_restsibling
last_childindents           r   parse_contentz!AdmonitionProcessor.parse_content@   s    	 +*G"jj0CDDOE8#'D "#DE8++..((?gkU22gkk'26N6N6S6STXTb6c6cgi6i6iGG 00JF('E,<,<S4?=RUV=V,W,W'*z~AS/S/S
 #nnZ88G<C<O!8!8!8UYJ
 "$/"2"23Edo-FF!%J# (& ##C$/$9:: "$/)"&**Y"?"?x'.$&,#x''r   boolc                v    | j                             |          rdS |                     ||          d         d uS )NTr   )REsearchrB   )r   r&   r(   s      r   testzAdmonitionProcessor.testz   s>    7>>%   	D4%%fe44Q7tCCr   blocks	list[str]Nonec                   |                     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   r.   r/   z{} {}p)liddr-   )poprE   rF   startr   parseBlocksendr5   rB   get_class_and_titleetree
SubElementsetformatr:   textCLASSNAME_TITLEr7   
parseChunkinsert)r   r&   rH   r(   mtheRestr?   klasstitler.   rL   rX   s               r   runzAdmonitionProcessor.run   s   

1GNN5!! 	Hwwyy1}}''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   matchre.Match[str]tuple[str, str | None]c                *   |                     d                                          |                     d          }}| j                            d|          }|/|                    dd          d                                         }n|dk    rd }||fS )Nr   r   r1   r   r-   )grouplower	RE_SPACESsubsplit
capitalize)r   ra   r^   r_   s       r   rS   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'   r(   r)   r*   r+   )r&   r'   r(   r)   r*   rC   )r&   r'   rH   rI   r*   rJ   )ra   rb   r*   rc   )r   r   r   r:   rY   recompilerE   rg   r"   rB   rG   r`   rS   __classcell__)r%   s   @r   r   r   1   s        I(O	S	T	TB
5!!I           8( 8( 8( 8(tD D D D$& $& $& $&L       r   r   c                     t          di | S )Nr   )r   )kwargss    r   makeExtensionrp      s    (((((r   )r   
__future__r   r-   r   r   r   xml.etree.ElementTreerT   ElementTreerk   typingr   markdownr	   r   r   rp   r   r   r   <module>rv      s  $  # " " " " "       , , , , , , % % % % % % % % % 				             %$$$$$$^ ^ ^ ^ ^) ^ ^ ^B B B B B. B B BJ) ) ) ) )r   