U
    ôDk\t  ã                   @   st   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
Z
G d
d„ deƒZG dd„ deƒZd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](http://www.tiagoserafim.com/).

All changes Copyright The Python Markdown Project

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

é    )Úabsolute_import)Úunicode_literalsé   )Ú	Extensioné   )ÚBlockProcessor)ÚetreeNc                   @   s   e Zd ZdZdd„ ZdS )ÚAdmonitionExtensionz+ Admonition extension for Python-Markdown. c                 C   s&   |  | ¡ |jj t|jƒdd¡ dS )z& Add Admonition to Markdown instance. Ú
admonitionéi   N)ZregisterExtensionÚparserÚblockprocessorsÚregisterÚAdmonitionProcessor)ÚselfZmd© r   ú@/usr/lib/python3/dist-packages/markdown/extensions/admonition.pyÚextendMarkdown   s    
z"AdmonitionExtension.extendMarkdownN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r	      s   r	   c                   @   s@   e Zd ZdZdZe d¡Ze d¡Zdd„ Z	dd„ Z
d	d
„ ZdS )r   r
   zadmonition-titlez<(?:^|\n)!!! ?([\w\-]+(?: +[\w\-]+)*)(?: +"(.*?)")? *(?:\n|$)z  +c                 C   sF   |   |¡}| j |¡pD| d| j ¡oD|d k	oD| dd¡ | j¡dkS )Nú ÚclassÚ éÿÿÿÿ)Ú	lastChildÚREÚsearchÚ
startswithZ
tab_lengthÚgetÚfindÚ	CLASSNAME)r   ÚparentÚblockÚsiblingr   r   r   Útest-   s
    
þzAdmonitionProcessor.testc                 C   sÂ   |   |¡}| d¡}| j |¡}|r4|| ¡ d … }|  |¡\}}|rœ|  |¡\}}t |d¡}	|	 	dd| j
|f ¡ |r t |	d¡}
||
_|
 	d| j¡ n|}	| j |	|¡ |r¾| d|¡ d S )Nr   Údivr   z%s %sÚp)r   Úpopr   r   ÚendZdetabÚget_class_and_titler   Z
SubElementÚsetr"   ÚtextÚCLASSNAME_TITLEr   Z
parseChunkÚinsert)r   r#   Zblocksr%   r$   ÚmZtheRestÚklassÚtitler'   r(   r   r   r   Úrun3   s$    

zAdmonitionProcessor.runc                 C   sZ   |  d¡ ¡ |  d¡ }}| j d|¡}|d krF| dd¡d  ¡ }n|dkrRd }||fS )Nr   r   r   r   r   )ÚgroupÚlowerÚ	RE_SPACESÚsubÚsplitÚ
capitalize)r   Úmatchr1   r2   r   r   r   r+   P   s    z'AdmonitionProcessor.get_class_and_titleN)r   r   r   r"   r.   ÚreÚcompiler   r6   r&   r3   r+   r   r   r   r   r   &   s   

r   c                  K   s
   t f | ŽS )N)r	   )Úkwargsr   r   r   ÚmakeExtension_   s    r>   )r   Z
__future__r   r   r   r   r   r   Úutilr   r;   r	   r   r>   r   r   r   r   Ú<module>   s   
9