
    11i                     8    S SK Jr   " S S5      r " S S5      rg)    )replacec                   "    \ rS rSrSrSS jrSrg)TreeNode   z^
Private class that creates the tree data structure from the orthography profile for
parsing.
c                 *    Xl         0 U l        X l        g )Ncharchildrensentinel)selfr	   r   s      G/home/james-whalen/.local/lib/python3.13/site-packages/segments/tree.py__init__TreeNode.__init__
   s    	     r   N)F)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__ r   r   r   r      s    
!r   r   c                   ,    \ rS rSrS r\4S jrS rSrg)Tree   c                 `    S n[        SSS9U l        U H  nU" U R                  U5        M     g )Nc                 n    U H(  nU R                   R                  U[        U5      5      n M*     SU l        g )NT)r
   
setdefaultr   r   )nodeliner	   s      r   _multigraph"Tree.__init__.<locals>._multigraph   s-    }}//htnE  DMr    T)r   )r   root)r   	graphemesr    graphemes       r   r   Tree.__init__   s/    	! R$/	!H		8, "r   c                    U R                  U R                  US5      u  p4XS  nU(       a\  UR                  U" US   5      5        USS  nU R                  U R                  US5      u  pgUR                  U5        XWS  nU(       a  M\  U$ )Nr      )_parser#   appendextend)r   r   errorresidxremris           r   parse
Tree.parse   s    ;;tyy$24jJJuSV}%ab'C;;tyy#q1DAJJqMb'C c 
r   c                 f   [        U5      S:X  a  / U4$ / nSnUnUnU[        U5      :  a|  UR                  R                  X%   5      nUS-  nU(       d  ORUR                  (       a0  U R	                  XUS X5-   5      u  pUSU /nUR                  U5        U[        U5      :  a  M|  U(       a  UnXC4$ )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.   r2   currr   cidxsubparses	            r   r)   Tree._parse(   s     t9>s7NSY==$$TZ0DAID}}!%T;
!K etX& SY Czr   )r#   N)	r   r   r   r   r   r   r2   r)   r   r   r   r   r   r      s    	- !( 
r   r   N)segments.errorsr   r   r   r   r   r   <module>r<      s    #	! 	!4 4r   