ó
    ö“,jÕ	  ã                   ón   • S r SSKrSSKJr  SSKJr  \R                   " S S5      5       r " S S5      rg)	z
A parse tree.
é    N)ÚIterable)Úreplacec                   óf   • \ rS rSr% Sr\\S'   \R                  " \	S9r
\	\S 4   \S'   Sr\\S'   Srg	)
ÚTreeNodeé
   z^
Private class that creates the tree data structure from the orthography profile for
parsing.
Úchar)Údefault_factoryÚchildrenFÚsentinel© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚ__annotations__ÚdataclassesÚfieldÚdictr
   r   ÚboolÚ__static_attributes__r   ó    Ú›C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\segments/tree.pyr   r   
   s6   ‡ ñð ƒIØ&1×&7Ò&7ÈÑ&M€Hˆd�3˜
�?Ñ#ÓMØ€HˆdÖr   r   c            
       ót   • \ rS rSrSrS\\   4S jr\4S\S\	\   4S jjr
S\S\S	\S\\	\   \4   4S
 jrSrg)ÚTreeé   z 
The parse tree.

>>> t = Tree('abcdefg')
>>> t.parse('abcde')
['a', 'b', 'c', 'd', 'e']
>>> t = Tree(['ab', 'c', 'de'])
>>> t.parse('abcde')
['ab', 'c', 'de']
Ú	graphemesc                 ó`   • 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-   € ã�Ø—}‘}×/Ñ/°´h¸t³nÓE’ñ à ˆD�Mr   Ú T)r   )r   Úroot)Úselfr   r$   Úgraphemes       r   Ú__init__ÚTree.__init__    s/   € ò	!ô ˜R¨$Ñ/ˆŒ	Û!ˆHÙ˜Ÿ	™	 8Ö,ò "r   r#   Úreturnc                 ó  • 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$ )zSegment `line` into graphemes.r   Né   )Ú_parser'   ÚappendÚextend)r(   r#   ÚerrorÚresÚidxÚremÚrÚis           r   ÚparseÚ
Tree.parse+   s   € à—;‘;˜tŸy™y¨$°Ó2‰ˆØ�4ˆjˆÞà�J‰J‘u˜S ™V“}Ô%Ø�a�b�'ˆCØ—;‘;˜tŸy™y¨#¨qÓ1‰DˆAØ�J‰J�qŒMØ�b�'ˆC÷ ˆcð ˆ
r   r'   r4   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  p‡U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/   r1   )	r(   r'   r#   r4   r8   Úcurrr"   ÚcidxÚsubparses	            r   r/   ÚTree._parse8   s¹   € ô ˆt‹9˜‹>Ø�s�7ˆNàˆØˆØˆØˆØ”S˜“YÓØ—=‘=×$Ñ$ T¡ZÓ0ˆDØ�A‰IˆDÞØØ�}�}Ø!%§¡¨T¸¸°;ÀÁ
Ó!K‘�ð ˜e˜t˜˜�Ø—‘˜XÔ&ð ”S˜“YÕö ØˆCØˆzÐr   )r'   N)r   r   r   r   r   r   r   r*   r   Úlistr8   r   ÚintÚtupler/   r   r   r   r   r   r      sa   † ñ	ð	- (¨3¡-ô 	-ð &-ñ ˜#ð °°c±õ ð˜8ð ¨3ð °Sð ¸UÀ4ÈÁ9ÈcÀ>Ñ=R÷ r   r   )	r   r   Úcollections.abcr   Úsegments.errorsr   Ú	dataclassr   r   r   r   r   Ú<module>rG      s>   ðñó Ý $å #ð ×Ñ÷ð ó ð÷?ò ?r   