
    Je	                     2    d Z  G d d      Z G d de      Zy)z2General purpose prefix tree, also known as a trie.c                   ,    e Zd ZddZd Zd Zd Zd Zy)TrieNodeNc                 .    i | _         || _        || _        y N)childrenkeyvalue)selfr   r   s      S/usr/lib/python3/dist-packages/spyder/plugins/completion/providers/snippets/trie.py__init__zTrieNode.__init__   s    
    c                    |d   }| j                   || _         t        | j                         dkD  r|dd  }|rB|d   }| j                  j                  |d       }|t	               }|| j                  |<   |||<   y || _        y N       )r   lenr   getr   r   )r	   sequencer   elemnodes        r
   __setitem__zTrieNode.__setitem__   s    {88DHtxx=1|HA;D==$$T40D|z&*d#"DNDJr   c                     d }|d   | j                   k(  r3|dd  }|r*|d   | j                  v r| j                  |d      }||   }|S | }|S r   )r   r   )r	   r   r   next_childrens       r
   __getitem__zTrieNode.__getitem__"   sd    A;$(("|HA;$--/$(MM(1+$>M(2D  r   c              #      K   | g}|g k7  rN|j                  d      }|t        |j                  j                               z  }|j                  | |g k7  rMy y wNr   )poplistr   valuesr   )r	   queuer   s      r
   __iter__zTrieNode.__iter__.   sU     rk99Q<DT$--..011Ezz%
	 rks   AAAc                     t        |      t        | j                        z   dk(  ry|d   }|| j                  k(  r|dd  }|s| j                  yy|d   }|| j                  v }|r| j                  |   }||v }|S )Nr   Tr   F)r   r   r   r   )r	   r   r   foundr   s        r
   __contains__zTrieNode.__contains__6   s    x=3txx=(A-{488|H::) A;D% MM$/M-Er   )NN)__name__
__module____qualname__r   r   r   r    r#    r   r
   r   r   
   s    
$
r   r   c                   .     e Zd Z fdZd Z fdZ xZS )Triec                 2    t         |   d       g | _        y )N )superr   	sequences)r	   	__class__s    r
   r   zTrie.__init__L   s    r   c                 Z    |r(|d   }|| j                   v r| j                   |   }||   S y | S r   )r   )r	   r   r   r   s       r
   r   zTrie.__getitem__P   s>    A;Dt}}$}}T*H~%  Kr   c                 :    |rt         |   ||       y || _        y r   )r,   r   r   )r	   r   r   r.   s      r
   r   zTrie.__setitem__Z   s    G%0DJr   )r$   r%   r&   r   r   r   __classcell__)r.   s   @r
   r)   r)   K   s     r   r)   N)__doc__r   r)   r'   r   r
   <module>r3      s!    9> >B8 r   