o
    Ù­jæ   ã                   @  sp   d dl m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 er.d dlmZ G d	d
„ d
eƒZdS )é    )Úannotations)ÚTYPE_CHECKINGÚLiteralé   )Ú
isStrSpace)Ú	StateBase)ÚToken)ÚEnvType)Ú
MarkdownItc                   @  sŽ   e Zd Zd7dd„Zd8dd„Zd9dd„Zd:dd„Zd;dd„Zd<dd „Zd=d"d#„Z	d>d%d&„Z
d?d(d)„Zd@d*d+„ZdAd,d-„ZdBd2d3„Zd:d4d5„Zd6S )CÚ
StateBlockÚsrcÚstrÚmdr
   Úenvr	   Útokensúlist[Token]ÚreturnÚNonec                 C  s´  || _ || _|| _|| _g | _g | _g | _g | _g | _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d}d } } }}	t| j ƒ}
t| j ƒD ]\\}}|slt|ƒrj|d7 }|dkre|	d|	d  7 }	n|	d7 }	qJd	}|d
ksv||
d kr¦|d
kr~|d7 }| j |¡ | j |¡ | j |¡ | j |	¡ | j d¡ d}d}d}	|d }qJ| j |
¡ | j |
¡ | j d¡ | j d¡ | j d¡ t| jƒd | _d| jd j ¡ v | _d S )Nr   FéÿÿÿÿÚrootÚ é   ú	é   TÚ
ÚcodeÚblock)r   r   r   r   ÚbMarksÚeMarksÚtShiftÚsCountÚbsCountÚ	blkIndentÚlineÚlineMaxÚtightÚddIndentÚ
listIndentÚ
parentTypeÚlevelÚresultÚlenÚ	enumerater   ÚappendÚrulerÚget_active_rulesÚ_code_enabled)Úselfr   r   r   r   Úindent_foundÚstartÚposÚindentÚoffsetÚlengthÚ	character© r9   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/markdown_it/rules_block/state_block.pyÚ__init__   sd   
€zStateBlock.__init__c                 C  s*   | j j› d| j› d| j› dt| jƒ› d�S )Nz(line=z,level=z,tokens=ú))Ú	__class__Ú__name__r#   r)   r+   r   )r1   r9   r9   r:   Ú__repr__q   s   
ÿÿÿÿzStateBlock.__repr__ÚttypeÚtagÚnestingúLiteral[-1, 0, 1]r   c                 C  sV   t |||ƒ}d|_|dk r|  jd8  _| j|_|dkr#|  jd7  _| j |¡ |S )zPush new token to "stream".Tr   r   )r   r   r)   r   r-   )r1   r@   rA   rB   Útokenr9   r9   r:   Úpushw   s   zStateBlock.pushr#   ÚintÚboolc                 C  s   | j | | j|  | j| kS )Ú.)r   r   r   ©r1   r#   r9   r9   r:   ÚisEmptyƒ   s   zStateBlock.isEmptyÚfrom_posc                 C  s\   || j k r,z| j| | j|  | j| k rW |S W n	 ty"   Y nw |d7 }|| j k s|S )rH   r   )r$   r   r   r   Ú
IndexError)r1   rK   r9   r9   r:   ÚskipEmptyLines‡   s   
ÿùÿ
ø	zStateBlock.skipEmptyLinesr4   c                 C  s>   	 z| j | }W n
 ty   Y |S w t|ƒs	 |S |d7 }q)z Skip spaces from given position.Tr   )r   rL   r   )r1   r4   Úcurrentr9   r9   r:   Ú
skipSpaces”   ó   ûÿùzStateBlock.skipSpacesÚminimumc                 C  s>   ||kr|S ||kr|d8 }t | j| ƒs|d S ||ks
|S )z+Skip spaces from given position in reverse.r   )r   r   )r1   r4   rQ   r9   r9   r:   ÚskipSpacesBack    ó   ýzStateBlock.skipSpacesBackr   c                 C  ó>   	 z| j | }W n
 ty   Y |S w ||kr	 |S |d7 }q)z(Skip character code from given position.Tr   )ÚsrcCharCoderL   )r1   r4   r   rN   r9   r9   r:   Ú	skipCharsª   rP   zStateBlock.skipCharsÚchc                 C  rT   )z*Skip character string from given position.Tr   )r   rL   )r1   r4   rW   rN   r9   r9   r:   ÚskipCharsStr¶   rP   zStateBlock.skipCharsStrc                 C  ó>   ||kr|S ||kr|d8 }|| j | kr|d S ||ks
|S )z4Skip character code reverse from given position - 1.r   )rU   )r1   r4   r   rQ   r9   r9   r:   ÚskipCharsBackÂ   rS   zStateBlock.skipCharsBackc                 C  rY   )z6Skip character string reverse from given position - 1.r   )r   )r1   r4   rW   rQ   r9   r9   r:   ÚskipCharsStrBackÌ   rS   zStateBlock.skipCharsStrBackÚbeginÚendr5   Ú
keepLastLFc                 C  sN  |}||krdS dg||  }d}||k r¢d}| j |  }	}
|d |k s&|r-| j| d n| j| }|
|k ru||k ru| j|
 }t|ƒrZ|dkrU|d|| j|  d  7 }n|d7 }n|
|	 | j| k rh|d7 }nn|
d7 }
|
|k ru||k s:||kr‹d||  | j|
|…  ||d < n| j|
|… ||d < |d7 }|d7 }||k sd |¡S )zCut lines range from source.r   r   r   r   r   ú )r   r   r   r   r!   r   Újoin)r1   r\   r]   r5   r^   r#   ÚqueueÚiÚ
lineIndentÚ	lineStartÚfirstÚlastrW   r9   r9   r:   ÚgetLinesÖ   s<   ÿý


õ$â
 zStateBlock.getLinesc                 C  s   | j o| j| | j dkS )zCheck if line is a code block,
        i.e. the code block rule is enabled and text is indented by more than 3 spaces.
        r   )r0   r    r"   rI   r9   r9   r:   Úis_code_block  s   zStateBlock.is_code_blockN)
r   r   r   r
   r   r	   r   r   r   r   )r   r   )r@   r   rA   r   rB   rC   r   r   )r#   rF   r   rG   )rK   rF   r   rF   )r4   rF   r   rF   )r4   rF   rQ   rF   r   rF   )r4   rF   r   rF   r   rF   )r4   rF   rW   r   r   rF   )r4   rF   r   rF   rQ   rF   r   rF   )r4   rF   rW   r   rQ   rF   r   rF   )
r\   rF   r]   rF   r5   rF   r^   rG   r   r   )r>   Ú
__module__Ú__qualname__r;   r?   rE   rJ   rM   rO   rR   rV   rX   rZ   r[   rg   rh   r9   r9   r9   r:   r      s    

b












+r   N)Ú
__future__r   Útypingr   r   Úcommon.utilsr   r.   r   rD   r   Úutilsr	   Úmarkdown_it.mainr
   r   r9   r9   r9   r:   Ú<module>   s    