o
    Zh0                     @   s,   d Z ddlZddlmZ G dd deZdS )z>String dispatch class to match regexps and dispatch commands.
    N)CommandChainDispatcherc                   @   sL   e Zd ZdZdd ZdddZdddZd	d
 Zdd Zdd Z	d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                 C   s   i | _ i | _d S )Nstrsregexsself r	   P/var/www/html/lang_env/lib/python3.10/site-packages/IPython/utils/strdispatch.py__init__   s   
zStrDispatch.__init__r   c                 C   *   | j |t }||| || j |< dS )z( Adds a target 'string' for dispatching N)r   getr   add)r   sobjprioritychainr	   r	   r
   add_s      zStrDispatch.add_sc                 C   r   )z& Adds a target regexp for dispatching N)r   r   r   r   )r   regexr   r   r   r	   r	   r
   add_re#   r   zStrDispatch.add_rec                 c   sF    || j v r| j | V  | j D ]\}}t||r|V  q	 qdS )z2 Get a seq of Commandchain objects that match key N)r   r   itemsrematch)r   keyrr   r	   r	   r
   dispatch*   s   
zStrDispatch.dispatchc                 C   s   d| j | jf S )Nz<Strdispatch %s, %s>r   r   r	   r	   r
   __repr__6   s   zStrDispatch.__repr__c                 c   s.    || j vrd S | j | D ]}|d V  qd S )N   )r   )r   r   elr	   r	   r
   	s_matches9   s   
zStrDispatch.s_matchesc                 c   s*    |  |D ]}|D ]}|d V  q
qdS )z- Yield all 'value' targets, without priority r   N)r   )r   r   valr   r	   r	   r
   flat_matches?   s   zStrDispatch.flat_matchesN)r   )__name__
__module____qualname____doc__r   r   r   r   r   r    r"   r	   r	   r	   r
   r      s    

r   )r&   r   ZIPython.core.hooksr   objectr   r	   r	   r	   r
   <module>   s    