o
    ¼>h½  ã                   @  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                   @  s8   e Zd ZdZe d¡Ze d¡Zdd
d„Zddd„Z	dS )ÚDefListProcessorz Process Definition Lists. z"(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)z^[ ]{0,3}[^ :]Úparentúetree.ElementÚblockÚstrÚreturnÚboolc                 C  s   t | j |¡ƒS )N)r   ÚREÚsearch)Úselfr	   r   © r   ú|/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/markdown/extensions/def_list.pyÚtest$   s   zDefListProcessor.testÚblocksú	list[str]úbool | Nonec                 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	   r   Ú	raw_blockÚmÚtermsr   Ú	no_indentÚdÚtheRestÚsiblingr6   r    r   r#   r"   r   r   r   Úrun'   sN   
ÿ


&€ÿzDefListProcessor.runN)r	   r
   r   r   r   r   )r	   r
   r   r   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚreÚcompiler   r(   r   rA   r   r   r   r   r      s    


r   c                   @  s.   e Zd ZdZddgZ	 g d¢Z	 ddd„ZdS )ÚDefListIndentProcessorz5 Process indented children of definition list items. r"   Úli)r    ÚolÚulr	   r
   r   r   r   ÚNonec                 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)r3   r4   r5   r8   )r   r	   r   r"   r   r   r   Úcreate_itemf   s   z"DefListIndentProcessor.create_itemN)r	   r
   r   r   r   rL   )rB   rC   rD   rE   Ú
ITEM_TYPESÚ
LIST_TYPESrM   r   r   r   r   rH   ]   s    rH   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)r5   ÚblockprocessorsÚregisterrH   r   )r   Úmdr   r   r   ÚextendMarkdownp   s   zDefListExtension.extendMarkdownN)rB   rC   rD   rE   rX   r   r   r   r   rP   m   s    rP   c                  K  s   t di | ¤ŽS )Nr   )rP   )Úkwargsr   r   r   ÚmakeExtensionv   s   rZ   )rE   Ú
__future__r   Ú r   rU   r   r   Úxml.etree.ElementTreer3   ÚElementTreerF   r   rH   rP   rZ   r   r   r   r   Ú<module>   s   ?	