
    c                         d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ 	 	 	 dd	ed
ededeeeegef                  fdZdS )z&Process block-level custom containers.    )floor)CallableOptional)
MarkdownIt)
charCodeAt)
StateBlock:Nmdnamemarkervalidatec                   	
 dt           ffd}fd}d|
t          
d          t          
          	p||p|}dt          dt          dt          d	t
          f	
fd
}| j        j                            ddz   |dg di           | 	                    d d|           | 	                    d d|           dS )a  Plugin ported from
    `markdown-it-container <https://github.com/markdown-it/markdown-it-container>`__.

    It is a plugin for creating block-level custom containers:

    .. code-block:: md

        :::: name
        ::: name
        *markdown*
        :::
        ::::

    :param name: the name of the container to parse
    :param marker: the marker character to use
    :param validate: func(marker, param) -> bool, default matches against the name
    :param render: render func

    paramsc                 h    |                                                      dd          d         k    S )N    r   )stripsplit)r   argsr   s     ?lib/python3.11/site-packages/mdit_py_plugins/container/index.pyvalidateDefaultz)container_plugin.<locals>.validateDefault%   s+    ||~~##C++A.$66    c                     ||         j         dk    r||                             d           |                     ||||          S )N   class)nestingattrJoinrenderToken)selftokensidx_optionsenvr   s        r   renderDefaultz'container_plugin.<locals>.renderDefault(   sK    #;!# 	03K  $///Xs;;;r      r   state	startLineendLinesilentc                 z   d}| j         |         | j        |         z   }| j        |         }| j        |         k    rdS |dz   }||k    r=	 | j        |         }n# t
          $ r Y n"w xY w||z
  z           |k    rn|dz  }||k    =t          ||z
  z            }	|	k     rdS |||z
  z  z  }| j        ||         }
| j        ||         }J  ||
          sdS |rdS |}	 |dz  }||k    rn| j         |         | j        |         z   }| j        |         }||k     r| j        |         | j        k     rn| j        |         k    rd| j        |         | j        z
  dk    r~|dz   }||k    r=	 | j        |         }n# t
          $ r Y n"w xY w||z
  z           |k    rn|dz  }||k    =t          ||z
  z            |	k     r|||z
  z  z  }| 	                    |          }||k     rd}	 | j
        }| j        }d| _
        || _        |                     d ddd          }|
|_        d|_        ||_        ||g|_        | j        j                            | |dz   |           |                     d d	dd
          }| j        ||         |_        d|_        || _
        || _        ||rdndz   | _        dS )NFr   T   	container
container__opendiv_closer   )bMarkstShifteMarkssrcCharCodesrc
IndexErrorr   sCount	blkIndent
skipSpaces
parentTypelineMaxpushmarkupblockinfomapr
   tokenizeline)r&   r'   r(   r)   auto_closedstartmaximumpos	charactermarker_countr>   r   nextLine
old_parentold_line_maxtokenmarker_char
marker_len
marker_strmin_markersr   r   s                   r   container_funcz(container_plugin.<locals>.container_func6   s   Y'%,y*AA,y) %+E22 	5 aiWn 	!IcN		   3;*45B 1HC Wn 	 cEkZ788+% 	5ez))59%3w;'###x'' 	5  	4 .	MH7"  L*U\(-CCEl8,Gw 5<#9EO#K  e/66 |H%71< !)C.  %	#II!   EsU{j89YF q .  cEkZ/00<?  C%K:--C""3''CW}  K%
}& !

3333UA>>
)	y1}h???

4444eR@@ys+%$k!8q9
ts$   A 
A&%A&/E= =
F
	F
fencer-   alt)	paragraph	reference
blockquotelistr.   r0   N)
strr   lenr   intboolr?   rulerbeforeadd_render_rule)r
   r   r   r   renderr   r$   rR   rN   rO   rP   rQ   s    ` `    @@@@r   container_pluginra   
   sk   67 7 7 7 7 7 7< < < < < KJZ++KZJ*?H$}Foj oS o3 oPT o o o o o o o o o o ob HNt	@@@A	   /D///8880D000&99999r   )r	   NN)__doc__mathr   typingr   r   markdown_itr   markdown_it.common.utilsr   markdown_it.rules_blockr   rY   r\   ra    r   r   <module>ri      s    , ,       % % % % % % % % " " " " " " / / / / / / . . . . . . 59d: d:d:
d: d: xc
D 012	d: d: d: d: d: d:r   