
    $g                        d Z ddlmZ ddlmZ ddlmZmZ ddlm	c m
Z	 ddlZ G d d	e          Z G d
 de          Z G d de          Z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                  b    e Zd ZdZ ej        d          Z ej        d          Zdd
Z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                P    t          | j                            |                    S )N)r   REsearch)selfr   r   s      \/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/markdown/extensions/def_list.pytestzDefListProcessor.test$   s    DGNN5))***    blocks	list[str]bool | Nonec                   |                     d          }| j                            |          }d |d |                                                             d          D             }||                                d          }| j                            |          }|r|d }	}n|                     |          \  }}	|r*d	                    |
                    d          |          }n|
                    d          }|                     |          }
|s|
|                    d|           dS |sR|
j        dk    rGd}|
j                            d          }|                    |
           |                     |          }
nd	}|
G|
j        d
k    r<|
}|s7t!          |          r(|d         j        dk    rt!          |d                   rd}nt#          j        |d
          }|D ]}t#          j        |d          }||_        | j        j                            |           t#          j        |d          }| j                            ||g           | j        j                                         |	r|                    d|	           d S d S )Nr   c                ^    g | ]*}|                                 |                                 +S  )strip).0terms     r   
<listcomp>z(DefListProcessor.run.<locals>.<listcomp>+   sC     D D D$6:jjllD D D Dr   
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siblingr<   r&   r    r)   r(   s                   r   runzDefListProcessor.run'   s   JJqMM	GNN9%%D D:AGGII:&,,T22D D D!%%''((#%++E22	 	+wAAE**JAw 	

A..AA

A..(( 	 MM!Y'''5 	++EL&&t,,EMM'"""nnV,,GGE7;$#6#6B $SWW $Bt););BrF);# !&$//B 	 	D!"d++BBGGe$$$b$''QC(((!!! 	&MM!W%%%%%	& 	&r   N)r   r   r   r   r   r   )r   r   r   r   r   r   )
__name__
__module____qualname____doc__recompiler   r.   r   rG   r   r   r   r
   r
      sf        %%	9	:	:B2:/00L+ + + +3& 3& 3& 3& 3& 3&r   r
   c                  .    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ulr   r   r   r   r   Nonec                h    t          j        |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)r9   r:   r;   r>   )r   r   r   r(   s       r   create_itemz"DefListIndentProcessor.create_itemf   s6     fd++UG,,,,,r   N)r   r   r   r   r   rS   )rH   rI   rJ   rK   
ITEM_TYPES
LIST_TYPESrU   r   r   r   rO   rO   ]   sJ        ?? J,###J'- - - - - -r   rO   c                      e Zd ZdZd ZdS )DefListExtensionz# Add definition lists to Markdown. c                    |j         j                            t          |j                   dd           |j         j                            t	          |j                   dd           dS )z9 Add an instance of `DefListProcessor` to `BlockParser`. 	defindentU   deflist   N)r;   blockprocessorsregisterrO   r
   )r   mds     r   extendMarkdownzDefListExtension.extendMarkdownp   sZ    
	!**+A")+L+Lk[]^^^
	!**+;BI+F+F	SUVVVVVr   N)rH   rI   rJ   rK   rb   r   r   r   rY   rY   m   s.        --W W W W Wr   rY   c                     t          di | S )Nr   )rY   )kwargss    r   makeExtensionre   v   s    %%f%%%r   )rK   
__future__r    r   r_   r   r   xml.etree.ElementTreer9   ElementTreerL   r
   rO   rY   re   r   r   r   <module>rj      s    # " " " " "       A A A A A A A A % % % % % % % % % 				<& <& <& <& <&~ <& <& <&~- - - - -0 - - - W W W W Wy W W W& & & & &r   