a
    ‹©lc.  ã                   @   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	   úU/var/www/html/django/DPS/env/lib/python3.9/site-packages/IPython/utils/strdispatch.pyÚ__init__   s    zStrDispatch.__init__r   c                 C   s*   | 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   s    zStrDispatch.add_sc                 C   s*   | j  |tƒ ¡}| ||¡ || j |< dS )z& Adds a target regexp for dispatching N)r   r   r   r   )r   Úregexr   r   r   r	   r	   r
   Úadd_re#   s    zStrDispatch.add_rec                 c   sB   || 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   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r    r	   r	   r	   r
   r      s   

r   )r$   r   ÚIPython.core.hooksr   Úobjectr   r	   r	   r	   r
   Ú<module>   s   