
    ddN                    r   U d 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  ej        e          Zd	ej        d
dgfdej        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        fdej        g dfdej        g dfdej        fd
ej        fgZded<    G d d          ZdS )zBlock-level tokenizer.    )annotationsN   )rules_block)Ruler)
StateBlock)Tokentable	paragraph	referencecodefence)r
   r   
blockquotelistr   hrr   )r
   r   r   
html_blockheadinglheadingzlist[tuple]_rulesc                  0    e Zd ZdZd Z	 dddZ	 dddZdS )ParserBlockz`
    ParserBlock#ruler -> Ruler

    [[Ruler]] instance. Keep configuration of block rules.
    c           	         t                      | _        t          D ]K}|d         }|d         }| j                            ||dt	          |          dk    r|d         ng i           Ld S )Nr   r   alt   )r   rulerr   pushlen)selfdatanamerules       8lib/python3.11/site-packages/markdown_it/parser_block.py__init__zParserBlock.__init__*   sr    WW
 	S 	SD7D7DJOOD$3t99q==Qb(QRRRR	S 	S    Fstater   	startLineintendLinesilentboolreturnNonec                    | j                             d          }|}|j        j        j        }d}||k     r|                    |          x|_        }||k    rdS |j        |         |j        k     rdS |j	        |k    r	||_        dS |D ]}	 |	|||d          r n| |_
        |j        }|dz
  |k     r|                    |dz
            rd}||k     r#|                    |          rd}|dz  }||_        ||k     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'   r(   rulesr3   r1   hasEmptyLinesr    s
             r!   tokenizezParserBlock.tokenize1   sJ    
##B''X%0
Wnn % 4 4T : ::EJw|D!EO33 {j(( %
   4tWe44 E
 ,+EK:D qG##dQh(?(?# $g~~%--"5"5~ $	!
I Wnnnnnnr#   Nsrcstr	outTokenslist[Token]ordstuple[int, ...] | Nonelist[Token] | Nonec                    |sdS t          |||||          }|                     ||j        |j                   |j        S )z<Process input string and push block tokens into `outTokens`.N)r   r;   r3   lineMaxtokens)r   r<   r/   envr>   r@   r$   s          r!   parsezParserBlock.parse`   sH      	43CD99eUZ777|r#   )F)
r$   r   r%   r&   r'   r&   r(   r)   r*   r+   )N)r<   r=   r>   r?   r@   rA   r*   rB   )__name__
__module____qualname____doc__r"   r;   rG    r#   r!   r   r   #   so         S S S OT-" -" -" -" -"j (,      r#   r   )rK   
__future__r   loggingr-   r   r   r   rules_block.state_blockr   tokenr   	getLoggerrH   LOGGERr	   r   r   r   r   
list_blockr   r   r   r   r
   r   __annotations__r   rL   r#   r!   <module>rU      s      " " " " " "              / / / / / /      		8	$	$ k+{!;<[k!Q!Q!QR888
 
;>KKKL[#%M%M%MN+'(;)+S+S+ST#%M%M%MN%&+'(#    *J J J J J J J J J Jr#   