
    $gG                       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j        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          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                  *    e Zd ZdZddZdd
ZddZdS )ParserBlockz`
    ParserBlock#ruler -> Ruler

    [[Ruler]] instance. Keep configuration of block rules.
    returnNonec                    t          t                               | _        t          D ]$\  }}}| j                            ||d|i           %d S )Nalt)r   RuleFuncBlockTyperulerr   push)selfnameruler   s       X/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/markdown_it/parser_block.py__init__zParserBlock.__init__5   sS    ,-//
% 	6 	6OD$JOOD$5555	6 	6    stater	   	startLineintendLinec                    | 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+   rulesr3   r1   hasEmptyLinesr$   s	            r%   tokenizezParserBlock.tokenize:   sH   
##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'   srcstrr/   r   envr   	outTokenslist[Token]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/   r>   r?   r(   s         r%   parsezParserBlock.parseg   sF      	43C33eUZ777|r'   N)r   r   )r(   r	   r)   r*   r+   r*   r   r   )
r<   r=   r/   r   r>   r   r?   r@   r   rA   )__name__
__module____qualname____doc__r&   r;   rE    r'   r%   r   r   .   s[         6 6 6 6
+" +" +" +"Z     r'   r   )'rI   
__future__r   loggingtypingr   r   r-   r   r    r   rules_block.state_blockr	   tokenr
   utilsr   markdown_itr   	getLoggerrF   LOGGERr*   boolr   r   r   r   r   r   
list_blockr   r   r   r   r   r   __annotations__r   rJ   r'   r%   <module>rW      s      " " " " " "  * * * * * * * *             / / / / / /             '&&&&&&		8	$	$ j#sD94?@  k+{!;<[r"k!Q!Q!QR888
 
;>KKKL[#%M%M%MN+',;)+S+S+ST#%M%M%MN%r*+',#:    *A A A A A A A A A Ar'   