o
    ÈÝg\  ã                   @  s‚   d Z ddlmZ ddlmZ ddlmZmZ ddlm	  m
Z	 ddlZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZdd„ ZdS )z›
Adds parsing of Definition Lists to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/definition_lists)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚBlockProcessorÚListIndentProcessorNc                   @  s4   e Zd ZdZe d¡Ze d¡Zdd„ Zdd„ Z	dS )	ÚDefListProcessorz Process Definition Lists. z"(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)z^[ ]{0,3}[^ :]c                 C  s   t | j |¡ƒS )N)ÚboolÚREÚsearch)ÚselfÚparentÚblock© r   úS/var/www/html/gwz/venv/lib/python3.10/site-packages/markdown/extensions/def_list.pyÚtest$   s   zDefListProcessor.testc                 C  s¨  |  d¡}| j |¡}dd„ |d | ¡ …  d¡D ƒ}|| ¡ d … }| j |¡}|r1|d }}	n|  |¡\}}	|rDd 	| 
d¡|¡}n| 
d¡}|  |¡}
|s\|
d u r\| d|¡ dS |sv|
jdkrvd	}|
j d¡}| |
¡ |  |¡}
nd
}|
d ur™|
jdkr™|
}|s˜t|ƒr˜|d jdkr˜t|d ƒr˜d	}nt |d¡}|D ]}t |d¡}||_q¡| jj |¡ t |d¡}| j ||g¡ | jj ¡  |	rÒ| d|	¡ d S d S )Nr   c                 S  s   g | ]
}|  ¡ r|  ¡ ‘qS r   )Ústrip)Ú.0Útermr   r   r   Ú
<listcomp>+   s    ÿz(DefListProcessor.run.<locals>.<listcomp>Ú
z{}
{}r   FÚpÚ	looselistÚlistÚdléÿÿÿÿÚddÚdt)Úpopr
   r   ÚstartÚsplitÚendÚNO_INDENT_REÚmatchÚdetabÚformatÚgroupÚ	lastChildÚinsertÚtagÚtextÚremoveÚlenÚetreeÚ
SubElementÚparserÚstateÚsetÚparseBlocksÚreset)r   r   ÚblocksÚ	raw_blockÚmÚtermsr   Ú	no_indentÚdÚtheRestÚsiblingr0   r   r   r   r   r   r   r   Úrun'   sN   
ÿ


&€ÿzDefListProcessor.runN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚreÚcompiler
   r"   r   r<   r   r   r   r   r      s    

r   c                   @  s,   e Zd ZdZddgZ	 g d¢Z	 dd„ ZdS )ÚDefListIndentProcessorz5 Process indented children of definition list items. r   Úli)r   ÚolÚulc                 C  s    t  |d¡}| j ||g¡ dS )z\ Create a new `dd` or `li` (depending on parent) and parse the block with it as the parent. r   N)r-   r.   r/   r2   )r   r   r   r   r   r   r   Úcreate_itemf   s   z"DefListIndentProcessor.create_itemN)r=   r>   r?   r@   Ú
ITEM_TYPESÚ
LIST_TYPESrG   r   r   r   r   rC   ]   s    rC   c                   @  s   e Zd ZdZdd„ ZdS )ÚDefListExtensionz# Add definition lists to Markdown. c                 C  s4   |j j t|j ƒdd¡ |j j t|j ƒdd¡ dS )z9 Add an instance of `DefListProcessor` to `BlockParser`. Ú	defindentéU   Údeflisté   N)r/   ÚblockprocessorsÚregisterrC   r   )r   Úmdr   r   r   ÚextendMarkdownp   s   zDefListExtension.extendMarkdownN)r=   r>   r?   r@   rR   r   r   r   r   rJ   m   s    rJ   c                  K  s   t di | ¤ŽS )Nr   )rJ   )Úkwargsr   r   r   ÚmakeExtensionv   s   rT   )r@   Ú
__future__r   Ú r   rO   r   r   Úxml.etree.ElementTreer-   ÚElementTreerA   r   rC   rJ   rT   r   r   r   r   Ú<module>   s   ?	