
    ,h#                       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 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i e G d de
e                Z G d de
e         Zy)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)DATACLASS_KWARGS   )EnvType)
MarkdownItc                  ^    e Zd ZddZedd       Zej                  dd       Zed	d       Zy)
	StateBasec                .    || _         || _        || _        y N)srcenvmd)selfr   r   r   s       S/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/markdown_it/ruler.py__init__zStateBase.__init__"   s        c                    | j                   S r   )_srcr   s    r   r   zStateBase.src'   s    yyr   c                     || _         d | _        y r   )r   _srcCharCode)r   values     r   r   zStateBase.src+   s    	48r   c                    t        j                  dt        d       | j                  !t	        d | j
                  D              | _        | j                  S )Nz?StateBase.srcCharCode is deprecated. Use StateBase.src instead.   )
stacklevelc              3  2   K   | ]  }t        |        y wr   )ord).0cs     r   	<genexpr>z(StateBase.srcCharCode.<locals>.<genexpr>8   s     %@c!f%@s   )warningswarnDeprecationWarningr   tupler   r   s    r   srcCharCodezStateBase.srcCharCode0   sH    M	

 $ %%@dii%@ @D   r   N)r   strr   r   r   r   )returnr-   )r   r-   r.   None)r.   ztuple[int, ...])__name__
__module____qualname__r   propertyr   setterr,    r   r   r   r   !   sG    
   	ZZ9 9 ! !r   r   c                      e Zd ZU ded<   y)RuleOptionsType	list[str]altN)r0   r1   r2   __annotations__r5   r   r   r7   r7   <   s    	Nr   r7   F)total
RuleFuncTvc                  H    e Zd ZU ded<   ded<    ed      Zded<   d	ed
<   y)Ruler-   nameboolenabledF)reprr<   fnr8   r9   N)r0   r1   r2   r:   r   rC   r5   r   r   r>   r>   D   s     
IM&B
&	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y)Rulerc                     g | _         d | _        y r   )	__rules__	__cache__r   s    r   r   zRuler.__init__M   s    13 >Br   c                d    t        | j                        D ]  \  }}|j                  |k(  s|c S  y)zFind rule index by name)	enumeraterG   r?   )r   r?   irules       r   __find__zRuler.__find__U   s4     0 	GAtyyD 	 r   c                r   dh}| j                   D ]1  }|j                  s|j                  D ]  }|j                  |        3 i | _        |D ]h  }g | j                  |<   | j                   D ]H  }|j                  s|r||j                  vr!| j                  |   j                  |j                         J j y)zBuild rules lookup cache N)rG   rA   r9   addrH   appendrC   )r   chainsrM   r?   chains        r   __compile__zRuler.__compile__\   s    NN 	!D<< !

4 !	!
  	6E$&DNN5! 6||e4883u%,,TWW56	6r   Nc                    | j                  |      }|xs i }|dk(  rt        d|       || j                  |   _        |j	                  dg       | j                  |   _        d| _        y)zReplace 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
        rJ   Parser rule not found: r9   N)rN   KeyErrorrG   rC   getr9   rH   )r   ruleNamerC   optionsindexs        r   atzRuler.ato   si     h'-RB;4XJ?@@#%u $+KKr$:u!r   c                    | j                  |      }|xs i }|dk(  rt        d|       | j                  j                  |t	        t
           |d||j                  dg                    d| _        y)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
        rJ   rW   Tr9   NrN   rX   rG   insertr>   r<   rY   rH   )r   
beforeNamerZ   rC   r[   r\   s         r   beforezRuler.before   sp     j)-RB;4ZLABB4
#HdBE28NO	
 r   c                    | j                  |      }|xs i }|dk(  rt        d|       | j                  j                  |dz   t	        t
           |d||j                  dg                    d| _        y)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
        rJ   rW   r   Tr9   Nr_   )r   	afterNamerZ   rC   r[   r\   s         r   afterzRuler.after   st     i(-RB;4YK@AAAItJ'$GKKr<RS	
 r   c                    | j                   j                  t        t           |d||xs i j	                  dg                    d| _        y)zPush 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)rG   rR   r>   r<   rY   rH   )r   rZ   rC   r[   s       r   pushz
Ruler.push   sC     	XtR'-R1D1DUB1OP	
 r   c                    t        |t              r|g}g }|D ]U  }| j                  |      }|dk  r|r|dk  r|st        d|       d| j                  |   _        |j                  |       W d| _        |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-   rN   rX   rG   rA   rR   rH   r   namesignoreInvalidresultr?   idxs         r   enablezRuler.enable   s     eS!GE 	 D--%Ca]a!B4&IJJ*.DNN3'MM$	  r   c                |    t        |t              r|g}| j                  D ]	  }d|_         | j	                  ||      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)rk   r-   rG   rA   rq   )r   rm   rn   rM   s       r   
enableOnlyzRuler.enableOnly   s@     eS!GENN 	!D DL	!{{5-00r   c                    t        |t              r|g}g }|D ]U  }| j                  |      }|dk  r|r|dk  r|st        d|       d| j                  |   _        |j                  |       W d| _        |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   ri   FNrj   rl   s         r   disablezRuler.disable   s     eS!GE 	 D--%Ca]a!B4&IJJ*/DNN3'MM$	  r   c                    | j                   | j                          | j                   J | j                   j                  |g       xs 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.

        )rH   rU   rY   )r   	chainNames     r   getRuleszRuler.getRules   sC     >>!>>--~~!!)R06B6r   c                T    | j                   D cg c]  }|j                   c}S c c}w )z Return all available rule names.)rG   r?   r   rs     r   get_all_ruleszRuler.get_all_rules  s     $/1///s   %c                n    | j                   D cg c]  }|j                  s|j                   c}S c c}w )zReturn the active rule names.)rG   rA   r?   rz   s     r   get_active_ruleszRuler.get_active_rules  s$     $<1!))<<<s   22)r.   r/   )r?   r-   r.   intr   )rZ   r-   rC   r<   r[   RuleOptionsType | Noner.   r/   )
ra   r-   rZ   r-   rC   r<   r[   r   r.   r/   )
rd   r-   rZ   r-   rC   r<   r[   r   r.   r/   )F)rm   zstr | Iterable[str]rn   r@   r.   r8   )rP   )rw   r-   r.   zlist[RuleFuncTv])r.   r8   )r0   r1   r2   r   rN   rU   r]   rb   re   rg   rq   rs   ru   rx   r|   r~   r5   r   r   rE   rE   L   sY   B6( PT!+6L	. +/  	
 ( 
: +/  	
 ( 
2 PT!+6L	  AF(9=	2 AF1(19=1	1" AF(9=	070=r   rE   r5   )__doc__
__future__r   collections.abcr   dataclassesr   r   typingr   r   r	   r
   r(   markdown_it._compatr   utilsr   markdown_itr   r   r7   r<   r>   rE   r5   r   r   <module>r      s   " # $ ( = =  0 &! !6iu  \"
 F 7:  H=GJ H=r   