
    jX                     D    d Z ddlZddlmZ ddlmZ  G d d          ZdS )z>String dispatch class to match regexps and dispatch commands.
    N)CommandChainDispatcher)Callablec                   N    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dS )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 | _        d S )Nstrsregexsselfs    `/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/IPython/utils/strdispatch.py__init__zStrDispatch.__init__   s    	    r   sobjpriorityc                     | j                             |t                                }|                    ||           || j         |<   dS )z( Adds a target 'string' for dispatching N)r	   getr   add)r   r   r   r   chains        r   add_szStrDispatch.add_s   sC     	a!7!9!9::		#h	!r   c                     | j                             |t                                }|                    ||           || j         |<   dS )z& Adds a target regexp for dispatching N)r
   r   r   r   )r   regexr   r   r   s        r   add_rezStrDispatch.add_re$   sF     '='?'?@@		#h"Er   c              #      K   || j         v r| j         |         V  | j                                        D ]\  }}t          j        ||          r|V   dS )z2 Get a seq of Commandchain objects that match key N)r	   r
   itemsrematch)r   keyrr   s       r   dispatchzStrDispatch.dispatch+   st      $))C.   k'')) 	 	FAsx3 				 	 	r   c                 (    d| j         d| j        dS )Nz<Strdispatch z, >r   r   s    r   __repr__zStrDispatch.__repr__7   s     )-DKKK@@r   c              #   T   K   || j         vrd S | j         |         D ]}|d         V  d S )N   )r	   )r   r   els      r   	s_matcheszStrDispatch.s_matches:   sF      diV)C. 	 	BQ%KKKK	 	r   c              #   X   K   |                      |          D ]}|D ]}|d         V  dS )z- Yield all 'value' targets, without priority r&   N)r!   )r   r   valr'   s       r   flat_matcheszStrDispatch.flat_matches@   sI      ==%% 	 	C  er   N)r   )__name__
__module____qualname____doc__r   strr   intr   r   r!   r$   r(   r+    r   r   r   r      s        
 
   s  S    # # # #
 
 
A A A      r   r   )r/   r   IPython.core.hooksr   typingr   r   r2   r   r   <module>r5      sr     
			 6 5 5 5 5 5      9 9 9 9 9 9 9 9 9 9r   