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+   ú_/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/markdown_it/parser_inline.pyÚ_default_terminator_re8   s   r-   ÚtextÚlinkifyÚnewliner)   Ú	backticksÚstrikethroughÚemphasisÚlinkÚimageÚautolinkÚhtml_inlineÚentityz$list[tuple[str, RuleFuncInlineType]]Ú_rulesÚ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Úrulerr9   ÚpushÚRuleFuncInline2TypeÚruler2r<   ÚsetÚ_extra_terminator_charsr-   Úterminator_re)ÚselfÚnameÚruleÚ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#   rE   Úaddr'   r(   r)   r*   rF   )rG   rL   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)rG   rP   ÚokrR   ÚrulesrQ   rV   rI   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&   rQ   r   N)
r@   rS   rX   rT   rU   rR   rW   ÚpendingÚsrcÚpushPending)rG   rP   rY   rZ   ÚendrQ   rI   r+   r+   r,   Útokenize®   s*   


ÿ

ìÿzParserInline.tokenizer]   rT   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`   rC   rS   rb   )rG   r]   rT   ra   rb   rP   Úrules2rI   r+   r+   r,   ÚparseÎ   s   

zParserInline.parseN)r$   r>   )rL   rM   r$   r>   )rP   r   r$   r>   )
r]   rM   rT   r   ra   r
   rb   rc   r$   rc   )Ú__name__Ú
__module__Ú__qualname__rK   rO   r[   r`   re   r+   r+   r+   r,   r=   b   s    



* r=   )r$   r%   )0Ú__doc__Ú
__future__r   Úcollections.abcr   Ú	functoolsr'   Útypingr   r&   r   r@   r   Úrules_inline.state_inliner   Útokenr	   Úutilsr
   Úmarkdown_itr   Ú	frozensetr#   Ú__annotations__rV   r-   Úboolr?   r.   r/   r0   r)   Úbacktickr2   r`   r3   r4   r5   r6   r7   r8   r9   rB   Ú
link_pairsÚpostProcessr;   r<   r=   r+   r+   r+   r,   Ú<module>   sP    ÿ 

ô

ú
