
    ̆h                        S r SSKJr  SSKJr  SSKJrJr  SSKJ	s  J
r	  SSKr " S S	\5      r " S
 S\5      r " S S\5      rS rg)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                  t    \ rS rSrSr\R                  " S5      r\R                  " S5      rS	S jr	S
S jr
Srg)DefListProcessor   zProcess Definition Lists. z"(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)z^[ ]{0,3}[^ :]c                J    [        U R                  R                  U5      5      $ )N)boolREsearch)selfparentblocks      T/opt/services/DDDS/venv/lib/python3.13/site-packages/markdown/extensions/def_list.pytestDefListProcessor.test$   s    DGGNN5)**    c                |   UR                  S5      nU R                  R                  U5      nUS UR                  5        R	                  S5       Vs/ s H*  nUR                  5       (       d  M  UR                  5       PM,     nnX4R                  5       S  nU R                  R                  U5      nU(       a  US pOU R                  U5      u  pU	(       a"  SR                  UR                  S5      U	5      n	OUR                  S5      n	U R                  U5      nU(       d  Uc  UR                  SU5        gU(       dP  UR                  S:X  a@  SnUR                  R	                  S5      nUR!                  U5        U R                  U5      nOSnUbR  UR                  S	:X  aB  UnU(       d8  [#        U5      (       a(  US
   R                  S:X  a  [#        US
   5      (       a  SnO[$        R&                  " US	5      nU H   n[$        R&                  " US5      nX^l        M"     U R(                  R*                  R-                  U5        [$        R&                  " US5      nU R(                  R/                  X/5        U R(                  R*                  R1                  5         U
(       a  UR                  SU
5        g g s  snf )Nr   
z{}
{}r   Fp	looselistlistdldddt)popr   r   startsplitstrip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termtermsr   	no_indentdtheRestsiblingr3   r   r   r   s                   r   runDefListProcessor.run'   s/   JJqM	GGNN9%:AGGI&,,T2D2 #'6:jjl 2 	 D%%'(#%%++E2	wE*JA
A.A
A..( MM!Y'+ELL&&t,EMM'"nnV,GE7;;$#6BSWWBt);BrF# !!&$/BD!!"d+BG  	e$b$'C(!MM!W% ]Ds   J9.J9 N)r   etree.Elementr   strreturnr   )r   rC   r7   z	list[str]rE   zbool | None)__name__
__module____qualname____firstlineno____doc__recompiler   r%   r   r@   __static_attributes__rB   r   r   r
   r
      s-    %	9	:B::/0L+3&r   r
   c                  6    \ rS rSrSrSS/r / SQr S	S jrSrg)
DefListIndentProcessor]   z4Process indented children of definition list items. r   li)r   olulc                j    [         R                  " US5      nU R                  R                  X2/5        g)z[Create a new `dd` or `li` (depending on parent) and parse the block with it as the parent. r   N)r0   r1   r2   r5   )r   r   r   r   s       r   create_item"DefListIndentProcessor.create_itemf   s*     fd+G,r   rB   N)r   rC   r   rD   rE   None)	rF   rG   rH   rI   rJ   
ITEM_TYPES
LIST_TYPESrU   rM   rB   r   r   rO   rO   ]   s     ? J,#J'-r   rO   c                      \ rS rSrSrS rSrg)DefListExtensionm   z"Add definition lists to Markdown. c                    UR                   R                  R                  [        UR                   5      SS5        UR                   R                  R                  [	        UR                   5      SS5        g)z8Add an instance of `DefListProcessor` to `BlockParser`. 	defindentU   deflist   N)r2   blockprocessorsregisterrO   r
   )r   mds     r   extendMarkdownDefListExtension.extendMarkdownp   sP    
		!!**+A"))+Lk[]^
		!!**+;BII+F	SUVr   rB   N)rF   rG   rH   rI   rJ   re   rM   rB   r   r   r[   r[   m   s    -Wr   r[   c                     [        S0 U D6$ )NrB   )r[   )kwargss    r   makeExtensionri   v   s    %f%%r   )rJ   
__future__r    r   rb   r   r   xml.etree.ElementTreer0   ElementTreerK   r
   rO   r[   ri   rB   r   r   <module>rn      sK    #  A % % 	<&~ <&~-0 - Wy W&r   