
    Pi                     F    d dl mZ  G d d          Z G d d          ZdS )    )replacec                       e Zd ZdZddZdS )TreeNodezj
    Private class that creates the tree data structure from the orthography profile for
    parsing.
    Fc                 0    || _         i | _        || _        d S )N)charchildrensentinel)selfr   r	   s      a/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/segments/tree.py__init__zTreeNode.__init__
   s    	     N)F)__name__
__module____qualname____doc__r    r   r   r   r      s2         
! ! ! ! ! !r   r   c                   $    e Zd Zd ZefdZd ZdS )Treec                 d    d }t          dd          | _        |D ]} || j        |           d S )Nc                 n    |D ]*}| j                             |t          |                    } +d| _        d S )NT)r   
setdefaultr   r	   )nodeliner   s      r   _multigraphz"Tree.__init__.<locals>._multigraph   s=     F F}//htnnEE DMMMr    T)r	   )r   root)r
   	graphemesr   graphemes       r   r   zTree.__init__   sW    	! 	! 	! R$///	! 	- 	-HK	8,,,,	- 	-r   c                 8   |                      | j        |d          \  }}||d          }|rn|                     ||d                              |dd          }|                      | j        |d          \  }}|                    |           ||d          }|n|S )Nr      )_parser   appendextend)r
   r   errorresidxremris           r   parsez
Tree.parse   s    ;;ty$22S344j 	JJuuSV}}%%%abb'C;;ty#q11DAqJJqMMMabb'C  	 
r   c                    t          |          dk    rg |fS g }d}|}|}|t          |          k     r|j                            ||                   }|dz  }|sn_|j        rE|                     |||d         ||z             \  }}|d|         g}|                    |           |t          |          k     |r|}||fS )z
        :param root: Tree node.
        :param line: String to parse.
        :param idx: Global counter of characters parsed.
        :return: (list of parsed graphemes, incremented character count)
        r   r    N)lenr   getr	   r!   r#   )	r
   r   r   r&   r*   currr   cidxsubparses	            r   r!   zTree._parse(   s     t99>>s7NSYY=$$T$Z00DAID } '!%T4;d
!K!K$ eteX&&& SYY  	Cczr   N)r   r   r   r   r   r*   r!   r   r   r   r   r      sK        	- 	- 	- !( 
 
 
 
    r   r   N)segments.errorsr   r   r   r   r   r   <module>r2      sq    # # # # # #	! 	! 	! 	! 	! 	! 	! 	!4 4 4 4 4 4 4 4 4 4r   