o
    ic                     @  sF  U d Z ddlmZ ddlmZ ddlZddlmZ ddlm	Z	 ddl
mZ dd	lmZ dd
lmZ ddlmZ er?ddlmZ eeZeeeeegef Z	 de	jddgfde	jg fde	jg dfde	jg dfde	jg dfde	jg dfde	j g fde	j!g dfde	j"g dfde	j#g fde	j$g fgZ%de&d< G dd dZ'dS )zBlock-level tokenizer.    )annotations)CallableN)TYPE_CHECKING   )rules_block)Ruler)
StateBlock)Token)EnvType)
MarkdownIttable	paragraph	referencecodefence)r   r   
blockquotelistr   hrr   )r   r   r   
html_blockheadinglheadingz.list[tuple[str, RuleFuncBlockType, list[str]]]_rulesc                   @  s.   e Zd ZdZdddZdddZdddZdS )ParserBlockz`
    ParserBlock#ruler -> Ruler

    [[Ruler]] instance. Keep configuration of block rules.
    returnNonec                 C  s4   t t  | _tD ]\}}}| j||d|i qd S )Nalt)r   RuleFuncBlockTyperulerr   push)selfnameruler    r"   U/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/markdown_it/parser_block.py__init__7   s   zParserBlock.__init__stater   	startLineintendLinec           	      C  s   | j d}|}|jjj}d}||k rq|| |_}||kr!dS |j| |jk r+dS |j	|kr5||_dS |D ]}||||drB nq7| |_
|j}|d |k rY||d rYd}||k rk||rkd}|d7 }||_||k sdS dS )z Generate tokens for input range. Fr   TN)r   getRulesmdoptions
maxNestingskipEmptyLineslinesCount	blkIndentleveltightisEmpty)	r   r%   r&   r(   rulesr/   r-   hasEmptyLinesr!   r"   r"   r#   tokenize<   s4   

zParserBlock.tokenizesrcstrr+   r   envr
   	outTokenslist[Token]list[Token] | Nonec                 C  s.   |sdS t ||||}| ||j|j |jS )z<Process input string and push block tokens into `outTokens`.N)r   r7   r/   lineMaxtokens)r   r8   r+   r:   r;   r%   r"   r"   r#   parsei   s
   zParserBlock.parseN)r   r   )r%   r   r&   r'   r(   r'   r   r   )
r8   r9   r+   r   r:   r
   r;   r<   r   r=   )__name__
__module____qualname____doc__r$   r7   r@   r"   r"   r"   r#   r   0   s
    

-r   )(rD   
__future__r   collections.abcr   loggingtypingr   r)   r   r   r   rules_block.state_blockr   tokenr	   utilsr
   markdown_itr   	getLoggerrA   LOGGERr'   boolr   r   r   r   r   r   
list_blockr   r   r   r   r   r   __annotations__r   r"   r"   r"   r#   <module>   s>    




