U
    ”ªShG  ã                   @  sN  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rvd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ddddgfdejddddgfdejddddgfdejdddgfdejg fdej dddgfdej!dddg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Ú
blockquoteÚlistÚhrÚ
html_blockÚheadingÚlheadingz.list[tuple[str, RuleFuncBlockType, list[str]]]Ú_rulesc                   @  sH   e Zd ZdZddœdd„Zdddddœd	d
„Zddddddœdd„ZdS )ÚParserBlockz`
    ParserBlock#ruler -> Ruler

    [[Ruler]] instance. Keep configuration of block rules.
    ÚNone)Úreturnc                 C  s4   t t ƒ | _tD ]\}}}| j ||d|i¡ qd S )NÚalt)r   ÚRuleFuncBlockTypeÚrulerr   Úpush)ÚselfÚnameÚruler   © r"   úK/root/rtd-docs/venv/lib/python3.8/site-packages/markdown_it/parser_block.pyÚ__init__5   s    zParserBlock.__init__r   Úint)ÚstateÚ	startLineÚendLiner   c           	      C  sÖ   | j  d¡}|}|jjj}d}||k rÒ| |¡ |_}||kr@qÒ|j| |jk rRqÒ|j	|krd||_qÒ|D ]}||||dƒrh q€qh| |_
|j}|d |k r¬| |d ¡r¬d}||k r| |¡rd}|d7 }||_qdS )z Generate tokens for input range.Ú Fr   TN)r   ZgetRulesÚmdÚoptionsÚ
maxNestingZskipEmptyLinesÚlineZsCountZ	blkIndentÚlevelZtightZisEmpty)	r   r&   r'   r(   Úrulesr-   r,   ZhasEmptyLinesr!   r"   r"   r#   Útokenize:   s0    

zParserBlock.tokenizeÚstrr   r
   zlist[Token]zlist[Token] | None)Úsrcr*   ÚenvÚ	outTokensr   c                 C  s.   |sdS t ||||ƒ}|  ||j|j¡ |jS )z<Process input string and push block tokens into `outTokens`.N)r   r0   r-   ZlineMaxÚtokens)r   r2   r*   r3   r4   r&   r"   r"   r#   Úparseg   s
    zParserBlock.parseN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r0   r6   r"   r"   r"   r#   r   .   s   -r   )'r:   Ú
__future__r   ÚloggingÚtypingr   r   r)   r   r   r   Zrules_block.state_blockr   Útokenr	   Úutilsr
   Zmarkdown_itr   Ú	getLoggerr7   ZLOGGERr%   Úboolr   r   r   r   r   r   Z
list_blockr   r   r   r   r   r   Ú__annotations__r   r"   r"   r"   r#   Ú<module>   s8   
	

ý


ï