
    ^jX                     <    d Z ddlZddlmZ ddlmZ  G d d      Zy)z>String dispatch class to match regexps and dispatch commands.
    N)CommandChainDispatcher)Callablec                   L    e Zd ZdZd ZddededefdZddZ	d Z
d	 Zd
 Zd Zy)StrDispatcha  Dispatch (lookup) a set of strings / regexps for match.

    Example:

    >>> dis = StrDispatch()
    >>> dis.add_s('hei',34, priority = 4)
    >>> dis.add_s('hei',123, priority = 2)
    >>> dis.add_re('h.i', 686)
    >>> print(list(dis.flat_matches('hei')))
    [123, 34, 686]
    c                      i | _         i | _        y )Nstrsregexsselfs    R/opt/ringagent/.cad-venv/lib/python3.12/site-packages/IPython/utils/strdispatch.py__init__zStrDispatch.__init__   s    	    sobjpriorityc                     | j                   j                  |t                     }|j                  ||       || j                   |<   y)z( Adds a target 'string' for dispatching N)r	   getr   add)r   r   r   r   chains        r   add_szStrDispatch.add_s   s7     		a!7!9:		#h		!r   c                     | j                   j                  |t                     }|j                  ||       || j                   |<   y)z& Adds a target regexp for dispatching N)r
   r   r   r   )r   regexr   r   r   s        r   add_rezStrDispatch.add_re$   s8     '='?@		#h"Er   c              #      K   || j                   v r| j                   |    | j                  j                         D ]   \  }}t        j                  ||      r| !" yw)z2 Get a seq of Commandchain objects that match key N)r	   r
   itemsrematch)r   keyrr   s       r   dispatchzStrDispatch.dispatch+   sX     $))))C. kk'') 	FAsxx3	 	s   AA c                 <    d| j                   d| j                  dS )Nz<Strdispatch z, >r   r   s    r   __repr__zStrDispatch.__repr__7   s    )-DKK@@r   c              #   `   K   || j                   vry | j                   |   D ]	  }|d     y w)N   )r	   )r   r   els      r   	s_matcheszStrDispatch.s_matches:   s5     dii))C. 	BQ%K	s   ,.c              #   T   K   | j                  |      D ]  }|D ]	  }|d      yw)z- Yield all 'value' targets, without priority r&   N)r!   )r   r   valr'   s       r   flat_matcheszStrDispatch.flat_matches@   s;     ==% 	C e	 	s   &(N)r   )__name__
__module____qualname____doc__r   strr   intr   r   r!   r$   r(   r+    r   r   r   r      s@    
s  S #
Ar   r   )r/   r   IPython.core.hooksr   typingr   r   r2   r   r   <module>r5      s!    
 6 9 9r   