o
    ¶­RhG  ã                   @  s>  U d Z ddlmZ ddl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	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.é    )ÚannotationsN)ÚTYPE_CHECKINGÚCallableé   )Ú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"   úZ/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/markdown_it/parser_block.pyÚ__init__5   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#   Úparseg   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   .   s
    

-r   )'rD   Ú
__future__r   ÚloggingÚtypingr   r   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<    

ý


ï