o
    #Îjs  ã                   @  s|  U d Z ddlmZ ddlmZ ddl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 dd
lmZ ddlmZ erCddlmZ eh d£ƒZded< ejd(dd„ƒZeeegef Z	 de
jfde
jfde
jfde
jfde
j fde
j!j"fde
j#j"fde
j$fde
j%fde
j&fde
j'fde
j(fgZ)d ed!< eegdf Z*d"e
j+fde
j!j,fde
j#j,fd#e
j-fgZ.d$ed%< G d&d'„ d'ƒZ/dS ))zTokenizes paragraph content.é    )Úannotations)ÚCallableN)ÚTYPE_CHECKINGé   )Úrules_inline)ÚRuler)ÚStateInline)ÚToken)ÚEnvType)Ú
MarkdownIt>   ú+ú@ú>ú:Ú{Ú_ú^ú!ú~ú<Ú*ú%ú]Ú
ú\ú-Ú}ú=ú$ú&ú#ú[ú`zfrozenset[str]Ú_DEFAULT_TERMINATORSÚreturnúre.Pattern[str]c                   C  s   t  dt  d t¡¡ d ¡S )Nr!   Ú r   )ÚreÚcompileÚescapeÚjoinr#   © r+   r+   úZ/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/markdown_it/parser_inline.pyÚ_default_terminator_re8   s   r-   ÚtextÚlinkifyÚnewliner)   Z	backticksÚstrikethroughÚemphasisÚlinkÚimageÚautolinkÚhtml_inlineÚentityz$list[tuple[str, RuleFuncInlineType]]Ú_rulesZbalance_pairsÚfragments_joinz%list[tuple[str, RuleFuncInline2Type]]Ú_rules2c                   @  s>   e Zd Zddd„Zddd„Zddd„Zddd„Zddd„ZdS )ÚParserInliner$   ÚNonec                 C  sd   t t ƒ | _tD ]\}}| j ||¡ qt t ƒ | _tD ]\}}| j ||¡ qtƒ | _	t
ƒ | _d S )N)r   ÚRuleFuncInlineTypeÚrulerr8   ÚpushÚRuleFuncInline2TypeÚruler2r:   ÚsetÚ_extra_terminator_charsr-   Úterminator_re)ÚselfÚnameÚruleZrule2r+   r+   r,   Ú__init__c   s   zParserInline.__init__ÚchÚstrc              	   C  sP   |t vr$|| jvr&| j |¡ t dt d t | jB ¡¡ d ¡| _dS dS dS )aC  Register a character that stops the ``text`` rule, allowing inline rules to fire.

        This lets plugins declare which characters their inline rules react to,
        mirroring the ``MARKER`` mechanism in the Rust markdown-it implementation.

        :param ch: A single character to add to the terminator set.
        r!   r&   r   N)r#   rC   Úaddr'   r(   r)   r*   rD   )rE   rI   r+   r+   r,   Úadd_terminator_charr   s   ÿÿü
ÿþz ParserInline.add_terminator_charÚstater   c                 C  sª   d}|j }| j d¡}|jjd }|j}||v r|| |_ dS |j|k rA|D ]}| jd7  _||dƒ}| jd8  _|r? nq&n|j|_ |sN| j d7  _ |j ||< dS )zwSkip single token by running all rules in validation mode;
        returns `True` if any rule reported success
        Fr&   Ú
maxNestingNr   T)Úposr>   ÚgetRulesÚmdÚoptionsÚcacheÚlevelÚposMax)rE   rM   ÚokrO   ÚrulesrN   rS   rG   r+   r+   r,   Ú	skipToken„   s*   


ÿ€zParserInline.skipTokenc                 C  s¨   d}| j  d¡}|j}|jjd }|j|k rI|j|k r)|D ]}||dƒ}|r( nq|r2|j|kr1nq| j|j|j 7  _| jd7  _|j|k s|jrR| 	¡  dS dS )z Generate tokens for input range.Fr&   rN   r   N)
r>   rP   rU   rQ   rR   rO   rT   ÚpendingÚsrcZpushPending)rE   rM   rV   rW   ÚendrN   rG   r+   r+   r,   Útokenize®   s*   


ÿ

ìÿzParserInline.tokenizerZ   rQ   r   Úenvr
   Útokensúlist[Token]c                 C  s<   t ||||ƒ}|  |¡ | j d¡}|D ]}||ƒ q|jS )z9Process input string and push inline tokens into `tokens`r&   )r   r\   rA   rP   r^   )rE   rZ   rQ   r]   r^   rM   Zrules2rG   r+   r+   r,   ÚparseÎ   s   

zParserInline.parseN)r$   r<   )rI   rJ   r$   r<   )rM   r   r$   r<   )
rZ   rJ   rQ   r   r]   r
   r^   r_   r$   r_   )Ú__name__Ú
__module__Ú__qualname__rH   rL   rX   r\   r`   r+   r+   r+   r,   r;   b   s    



* r;   )r$   r%   )0Ú__doc__Ú
__future__r   Úcollections.abcr   Ú	functoolsr'   Útypingr   r&   r   r>   r   Zrules_inline.state_inliner   Útokenr	   Úutilsr
   Zmarkdown_itr   Ú	frozensetr#   Ú__annotations__rS   r-   Úboolr=   r.   r/   r0   r)   Úbacktickr1   r\   r2   r3   r4   r5   r6   r7   r8   r@   Z
link_pairsZpostProcessr9   r:   r;   r+   r+   r+   r,   Ú<module>   sP    ÿ 

ô

ú
