§
    qŠtj¶#  ã                  ó4  — d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZ ddlZddlmZ e	rdd	lmZ  G d
„ d¦  «        Z G d„ ded¬¦  «        Z ed¦  «        Z	  ed¬¦  «         G d„ de
e         ¦  «        ¦   «         Z G d„ de
e         ¦  «        ZdS )aü  
class Ruler

Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and
[[MarkdownIt#inline]] to manage sequences of functions (rules):

- keep rules in defined order
- assign the name to each rule
- enable/disable rules
- add/replace rules
- allow assign rules to additional named chains (in the same)
- caching lists of active rules

You will not need use this class directly until write plugins. For simple
rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and
[[MarkdownIt.use]].
é    )Úannotations)ÚIterable)Ú	dataclassÚfield)ÚTYPE_CHECKINGÚGenericÚ	TypedDictÚTypeVarNé   )ÚEnvType)Ú
MarkdownItc                  óh   — e Zd Zdd„Zedd	„¦   «         Zej        dd„¦   «         Zedd„¦   «         ZdS )Ú	StateBaseÚsrcÚstrÚmdr   Úenvr   c                ó0   — || _         || _        || _        d S ©N)r   r   r   )Úselfr   r   r   s       úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/markdown_it/ruler.pyÚ__init__zStateBase.__init__!   s   € ØˆŒØˆŒØˆŒˆˆó    Úreturnc                ó   — | j         S r   )Ú_src©r   s    r   r   zStateBase.src&   s
   € àŒyÐr   ÚvalueÚNonec                ó"   — || _         d | _        d S r   )r   Ú_srcCharCode)r   r   s     r   r   zStateBase.src*   s   € àˆŒ	Ø48ˆÔÐÐr   útuple[int, ...]c                óœ   — t          j        dt          d¬¦  «         | j        €#t	          d„ | j        D ¦   «         ¦  «        | _        | j        S )Nz?StateBase.srcCharCode is deprecated. Use StateBase.src instead.é   )Ú
stacklevelc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   )Úord)Ú.0Úcs     r   ú	<genexpr>z(StateBase.srcCharCode.<locals>.<genexpr>7   s(   è è € Ð%@Ð%@°¥c¨!¡f¤fÐ%@Ð%@Ð%@Ð%@Ð%@Ð%@r   )ÚwarningsÚwarnÚDeprecationWarningr!   Útupler   r   s    r   ÚsrcCharCodezStateBase.srcCharCode/   sY   € åŒØMÝØð	
ñ 	
ô 	
ð 	
ð
 ÔÐ$Ý %Ð%@Ð%@°d´iÐ%@Ñ%@Ô%@Ñ @Ô @ˆDÔØÔ Ð r   N)r   r   r   r   r   r   )r   r   )r   r   r   r   )r   r"   )Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   Úsetterr/   © r   r   r   r       sŠ   € € € € € ðð ð ð ð
 ðð ð ñ „Xðð 	„Zð9ð 9ð 9ñ „Zð9ð ð!ð !ð !ñ „Xð!ð !ð !r   r   c                  ó   — e Zd ZU ded<   dS )ÚRuleOptionsTypeú	list[str]ÚaltN)r0   r1   r2   Ú__annotations__r5   r   r   r7   r7   ;   s   € € € € € € Ø€N€N�N€N€Nr   r7   F)ÚtotalÚ
RuleFuncTvT)Úslotsc                  óP   — e Zd ZU ded<   ded<    ed¬¦  «        Zded<   d	ed
<   dS )ÚRuler   ÚnameÚboolÚenabledF)Úreprr<   Úfnr8   r9   N)r0   r1   r2   r:   r   rD   r5   r   r   r?   r?   C   sI   € € € € € € à€I€I�IØ€M€M�MØ�U Ð&Ñ&Ô&€BÐ&Ð&Ð&Ñ&Ø€N€N�N€N€Nr   r?   c                  ó”   — e Zd Zd$d„Zd%d„Z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	 d*d+d„Zd,d-d!„Zd.d"„Zd.d#„Zd	S )/ÚRulerr   r   c                ó"   — g | _         d | _        d S r   )Ú	__rules__Ú	__cache__r   s    r   r   zRuler.__init__L   s   € à13ˆŒð >BˆŒˆˆr   r@   r   Úintc                óX   — t          | j        ¦  «        D ]\  }}|j        |k    r|c S ŒdS )zFind rule index by nameéÿÿÿÿ)Ú	enumeraterH   r@   )r   r@   ÚiÚrules       r   Ú__find__zRuler.__find__T   s?   € å  ¤Ñ0Ô0ð 	ð 	‰GˆAˆtØŒy˜DÒ Ð Ø���ð !àˆrr   c                ó   — dh}| j         D ])}|j        sŒ
|j        D ]}|                     |¦  «         ŒŒ*i | _        |D ]O}g | j        |<   | j         D ];}|j        sŒ
|r
||j        vrŒ| j        |                              |j        ¦  «         Œ<ŒPdS )zBuild rules lookup cacheÚ N)rH   rB   r9   ÚaddrI   ÚappendrD   )r   ÚchainsrO   r@   Úchains        r   Ú__compile__zRuler.__compile__[   sØ   € à�ˆà”Nð 	!ð 	!ˆDØ”<ð ØØœð !ð !�Ø—
’
˜4Ñ Ô Ð Ð ð!àˆŒØð 	6ð 	6ˆEØ$&ˆDŒN˜5Ñ!Øœð 6ð 6�Ø”|ð ØØð ˜e¨4¬8Ð3Ð3ØØ”˜uÔ%×,Ò,¨T¬WÑ5Ô5Ð5Ð5ð6ð	6ð 	6r   NÚruleNamerD   r<   ÚoptionsúRuleOptionsType | Nonec                óæ   — |                       |¦  «        }|pi }|dk    rt          d|› �¦  «        ‚|| j        |         _        |                     dg ¦  «        | j        |         _        d| _        dS )zöReplace rule by name with new function & options.

        :param ruleName: rule name to replace.
        :param fn: new rule function.
        :param options: new rule options (not mandatory).
        :raises: KeyError if name not found
        rL   úParser rule not found: r9   N)rP   ÚKeyErrorrH   rD   Úgetr9   rI   )r   rX   rD   rY   Úindexs        r   ÚatzRuler.atn   su   € ð —’˜hÑ'Ô'ˆØ�-˜RˆØ�BŠ;ˆ;ÝÐ?°XÐ?Ð?Ñ@Ô@Ð@Ø#%ˆŒ�uÔÔ Ø$+§K¢K°°rÑ$:Ô$:ˆŒ�uÔÔ!ØˆŒˆˆr   Ú
beforeNamec                ó
  — |                       |¦  «        }|pi }|dk    rt          d|› �¦  «        ‚| j                             |t	          t
                   |d||                     dg ¦  «        ¦  «        ¦  «         d| _        dS )aK  Add new rule to chain before one with given name.

        :param beforeName: new rule will be added before this one.
        :param ruleName: new rule will be added before this one.
        :param fn: new rule function.
        :param options: new rule options (not mandatory).
        :raises: KeyError if name not found
        rL   r\   Tr9   N©rP   r]   rH   Úinsertr?   r<   r^   rI   )r   ra   rX   rD   rY   r_   s         r   ÚbeforezRuler.before€   s‹   € ð —’˜jÑ)Ô)ˆØ�-˜RˆØ�BŠ;ˆ;ÝÐA°ZÐAÐAÑBÔBÐBØŒ×ÒØ•4�
Ô# H¨d°B¸¿ºÀEÈ2Ñ8NÔ8NÑOÔOñ	
ô 	
ð 	
ð ˆŒˆˆr   Ú	afterNamec                ó  — |                       |¦  «        }|pi }|dk    rt          d|› �¦  «        ‚| j                             |dz   t	          t
                   |d||                     dg ¦  «        ¦  «        ¦  «         d| _        dS )aG  Add new rule to chain after one with given name.

        :param afterName: new rule will be added after this one.
        :param ruleName: new rule will be added after this one.
        :param fn: new rule function.
        :param options: new rule options (not mandatory).
        :raises: KeyError if name not found
        rL   r\   r   Tr9   Nrc   )r   rf   rX   rD   rY   r_   s         r   ÚafterzRuler.after˜   s�   € ð —’˜iÑ(Ô(ˆØ�-˜RˆØ�BŠ;ˆ;ÝÐ@°YÐ@Ð@ÑAÔAÐAØŒ×ÒØ�A‰I•t�JÔ'¨°$¸¸G¿KºKÈÈrÑ<RÔ<RÑSÔSñ	
ô 	
ð 	
ð ˆŒˆˆr   c                óª   — | j                              t          t                   |d||pi                      dg ¦  «        ¦  «        ¦  «         d| _        dS )zÒPush new rule to the end of chain.

        :param ruleName: new rule will be added to the end of chain.
        :param fn: new rule function.
        :param options: new rule options (not mandatory).

        Tr9   N)rH   rT   r?   r<   r^   rI   )r   rX   rD   rY   s       r   Úpushz
Ruler.push°   sU   € ð 	Œ×ÒÝ•Ô˜X t¨R°'°-¸R×1DÒ1DÀUÈBÑ1OÔ1OÑPÔPñ	
ô 	
ð 	
ð ˆŒˆˆr   FÚnamesústr | Iterable[str]ÚignoreInvalidrA   r8   c                ó  — t          |t          ¦  «        r|g}g }|D ]a}|                      |¦  «        }|dk     r|rŒ |dk     r|st          d|› �¦  «        ‚d| j        |         _        |                     |¦  «         Œbd| _        |S )a  Enable rules with given names.

        :param names: name or list of rule names to enable.
        :param ignoreInvalid: ignore errors when rule not found
        :raises: KeyError if name not found and not ignoreInvalid
        :return: list of found rule names
        r   ú!Rules manager: invalid rule name TN©Ú
isinstancer   rP   r]   rH   rB   rT   rI   ©r   rk   rm   Úresultr@   Úidxs         r   ÚenablezRuler.enable¿   s¦   € õ �e�SÑ!Ô!ð 	Ø�GˆEØˆØð 	 ð 	 ˆDØ—-’- Ñ%Ô%ˆCØ�a’�˜]�ØØ�a’� �ÝÐIÀ4ÐIÐIÑJÔJÐJØ*.ˆDŒN˜3ÔÔ'Ø�MŠM˜$ÑÔÐÐØˆŒØˆr   c                ó€   — t          |t          ¦  «        r|g}| j        D ]	}d|_        Œ
|                      ||¦  «        S )a-  Enable rules with given names, and disable everything else.

        :param names: name or list of rule names to enable.
        :param ignoreInvalid: ignore errors when rule not found
        :raises: KeyError if name not found and not ignoreInvalid
        :return: list of found rule names
        F)rq   r   rH   rB   ru   )r   rk   rm   rO   s       r   Ú
enableOnlyzRuler.enableOnly×   sK   € õ �e�SÑ!Ô!ð 	Ø�GˆEØ”Nð 	!ð 	!ˆDØ ˆDŒLˆLØ�{Š{˜5 -Ñ0Ô0Ð0r   c                ó  — t          |t          ¦  «        r|g}g }|D ]a}|                      |¦  «        }|dk     r|rŒ |dk     r|st          d|› �¦  «        ‚d| j        |         _        |                     |¦  «         Œbd| _        |S )a  Disable rules with given names.

        :param names: name or list of rule names to enable.
        :param ignoreInvalid: ignore errors when rule not found
        :raises: KeyError if name not found and not ignoreInvalid
        :return: list of found rule names
        r   ro   FNrp   rr   s         r   ÚdisablezRuler.disableç   s¦   € õ �e�SÑ!Ô!ð 	Ø�GˆEØˆØð 	 ð 	 ˆDØ—-’- Ñ%Ô%ˆCØ�a’�˜]�ØØ�a’� �ÝÐIÀ4ÐIÐIÑJÔJÐJØ*/ˆDŒN˜3ÔÔ'Ø�MŠM˜$ÑÔÐÐØˆŒØˆr   rR   Ú	chainNameúlist[RuleFuncTv]c                ó„   — | j         €|                      ¦   «          | j         €J ‚| j                              |g ¦  «        pg S )a=  Return array of active functions (rules) for given chain name.
        It analyzes rules configuration, compiles caches if not exists and returns result.

        Default chain name is `''` (empty string). It can't be skipped.
        That's done intentionally, to keep signature monomorphic for high speed.

        )rI   rW   r^   )r   rz   s     r   ÚgetRuleszRuler.getRulesÿ   sI   € ð Œ>Ð!Ø×ÒÑÔÐØ”>Ð-Ð-Ð-àŒ~×!Ò! )¨RÑ0Ô0Ð6°BÐ6r   c                ó$   — d„ | j         D ¦   «         S )z Return all available rule names.c                ó   — g | ]	}|j         ‘Œ
S r5   )r@   ©r(   Úrs     r   ú
<listcomp>z'Ruler.get_all_rules.<locals>.<listcomp>  s   € Ð/Ð/Ð/˜1�”Ð/Ð/Ð/r   ©rH   r   s    r   Úget_all_ruleszRuler.get_all_rules  s   € à/Ð/ ¤Ð/Ñ/Ô/Ð/r   c                ó$   — d„ | j         D ¦   «         S )zReturn the active rule names.c                ó*   — g | ]}|j         ¯	|j        ‘ŒS r5   )rB   r@   r€   s     r   r‚   z*Ruler.get_active_rules.<locals>.<listcomp>  s!   € Ð<Ð<Ð<˜1°!´)Ð<�”Ð<Ð<Ð<r   rƒ   r   s    r   Úget_active_ruleszRuler.get_active_rules  s   € à<Ð< ¤Ð<Ñ<Ô<Ð<r   )r   r   )r@   r   r   rJ   r   )rX   r   rD   r<   rY   rZ   r   r   )
ra   r   rX   r   rD   r<   rY   rZ   r   r   )
rf   r   rX   r   rD   r<   rY   rZ   r   r   )F)rk   rl   rm   rA   r   r8   )rR   )rz   r   r   r{   )r   r8   )r0   r1   r2   r   rP   rW   r`   re   rh   rj   ru   rw   ry   r}   r„   r‡   r5   r   r   rF   rF   K   sq  € € € € € ðBð Bð Bð Bðð ð ð ð6ð 6ð 6ð 6ð( PTðð ð ð ð ð. +/ðð ð ð ð ð: +/ðð ð ð ð ð2 PTðð ð ð ð ð  AFðð ð ð ð ð2 AFð1ð 1ð 1ð 1ð 1ð" AFðð ð ð ð ð07ð 7ð 7ð 7ð 7ð0ð 0ð 0ð 0ð=ð =ð =ð =ð =ð =r   rF   )Ú__doc__Ú
__future__r   Úcollections.abcr   Údataclassesr   r   Útypingr   r   r	   r
   r+   Úutilsr   Úmarkdown_itr   r   r7   r<   r?   rF   r5   r   r   ú<module>r�      sŸ  ððð ð$ #Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø €€€à Ð Ð Ð Ð Ð àð 'Ø&Ð&Ð&Ð&Ð&Ð&ð!ð !ð !ð !ð !ñ !ô !ð !ð6ð ð ð ð �i uð ñ ô ð ð ˆW�\Ñ"Ô"€
Ø Fð €�ÐÑÔðð ð ð ð ˆ7�:Ôñ ô ñ ÔððH=ð H=ð H=ð H=ð H=ˆG�JÔñ H=ô H=ð H=ð H=ð H=r   