
    OTh)                         d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ	  G d de      Z
d Zd Zd	 Z G d
 de      Z G d d      Zy)    )Enum)GraphemePropertyGroup)	get_group)InCBPropertyGroupc                       e Zd ZdZdZdZy)BreakPossibilitycertainpossiblenobreakN)__name__
__module____qualname__CERTAINPOSSIBLENO_BREAK     T/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/grapheme/finder.pyr   r   	   s    GHHr   r   c                    | t         j                  u r"|t         j                  u rt        j                  S t	        | t               sJ t	        |t               sJ | t         j
                  u r"|t         j
                  u rt        j                  S | t         j                  t         j                  t         j                  fv s1|t         j                  t         j                  t         j                  fv rD| t         j                  u r"|t         j                  u rt        j                  S t        j                  S | t         j                  u rP|t         j                  t         j                  t         j                  t         j                  fv rt        j                  S | t         j                  t         j                  fv r2|t         j                  t         j                  fv rt        j                  S | t         j                  t         j                  fv r"|t         j                  u rt        j                  S |t         j                   t         j"                  t         j$                  fv s| t         j&                  u rt        j                  S | t         j"                  u r"|t         j(                  u rt        j                  S t        j                  S N)
GraphGroupOTHERr   r   
isinstanceREGIONAL_INDICATORr   CONTROLCRLFr   LVLVLVTTEXTENDZWJSPACING_MARKPREPENDEXTENDED_PICTOGRAPHICabs     r   get_break_possibilityr+      s   Jj&6&6!6'''a$$$a$$$
 	J)))a:3P3P.P((( 	Z
>>!H C 
!z}}"4#,,,#+++ 	JLLQ:<<z}}jnn"]]((( 	Z]]JLL))aJLL*,,3O.O((( 	Z^^Z\\**qJLL/@(((
 	Z

0G0GHHAQ[QcQcLc((( 	JNNqJ$D$DD((( ###r   c                     | t         j                  u r"|t         j                  u rt        j                  S | t         j                  t         j
                  fv r"|t         j                  u rt        j                  S | t         j                  t         j
                  t         j                  fv r"|t         j                  u rt        j                  S t        | t               sJ t        |t               sJ t        j                  S r   )
	InCBGroupr   r   r   LINKERr#   	CONSONANTr   r   r   r(   s     r   get_break_possibility_incbr0   D   s    IOOY__ 4'''Yy//00Q):M:M5M(((Yy//1D1DEE!yO_O_J_(((a###a### $$$r   c                 D   |t        |       k\  rt        |       S t        | |         }t        | |         }	 |dk  ry|dz  }t        | |         }t        | |         }t        ||      t        j
                  k(  r"t        ||      t        j                  k7  r|dz   S |}|}k)Nr      )lenr   get_group_incbr+   r   r   r0   r   )stringindexprev	prev_incbcurcur_incbs         r   get_last_certain_break_indexr;   V   s    F6{VE]#Dve}-I
A:
u&!&-0!#t,0@0H0HH*8Y?CSC\C\\19	 r   c                   ,    e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
UStater   
                     N)r   r   r   DEFAULTGB9c_ConsonantGB9c_ExtendGB9c_Linker
GB11_PictoGB11_ZWJ
GB12_FirstGB12_Secondr   r   r   r=   r=   k   s*    GNKKJHJKr   r=   c                   0    e Zd ZdefdZd Zd Zd Zd Zy)GraphemeIteratorr5   c                    t        |      | _        d| _        d | _        t        j
                  | _        	 t        | j                        | _        t        | j                        }|| _        |t        j                  u rt        j                  | _        y |t        j                  u rt        j                  | _        y t        | j                        }|t        j                   u rt        j"                  | _        y y # t$        $ r
 d | _        Y y w xY w)N )iterstr_iterbufferlastgr=   rE   statenextr   r   r'   rI   r   rK   r4   r-   r/   rF   StopIteration)selfr5   rT   lastincbs       r   __init__zGraphemeIterator.__init__w   s    V
^^
	7t}}-DK dkk*EDJ
888#..
*777#..
)$++6y222!'!6!6DJ 3  	DK	s   C9 9DDc                     | S r   r   )rX   s    r   __iter__zGraphemeIterator.__iter__   s    r   c                    d }t         j                  }| j                  t        j                  u r6|t        j                  u r$|t
        j                  u rdt         j                  fS | j                  t        j                  u r|t        j                  u rd}n| j                  t        j                  t        j                  t        j                  fv rd}nx|t        j                  t        j                  t        j                  fv rd}nC| j                  t        j                  u rC|t        j                  t        j                  t        j                  t        j                  fv rd}n| j                  t        j                  t        j                  fv r%|t        j                  t        j                  fv rd}n| j                  t        j                  t        j                  fv r|t        j                  u rd}nR|t        j                  t        j                  t        j                   fv rd}n| j                  t        j"                  u rd}|t        j                  u r|t
        j                  u r	 ||fS |t        j$                  u rt         j&                  }||fS |t        j(                  u rt         j*                  }||fS |t
        j,                  u rt         j.                  }||fS )NTF)r=   rE   rT   r   r   r-   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   rI   r   rK   r/   rF   )rX   nextgnextincbshould_break
next_states        r   default_should_breakz%GraphemeIterator.default_should_break   s<   ^^
 JJ****)))IOO+ ''ZZ:==(Ujmm-C !LZZJ..
z}}MM  Lz)):==*--HH  LZZ:<<'ELLLLMMNN	6
 -
 !LZZJMM:<<88Uz||U_UaUaFb=b !LZZJNNJLL99ez||>S !Lz((*..*:Q:QRR
 !LZZ:--- !LJ$$$Y__)D Z'' j666**J
 Z''	 j333**J Z'' ,,,..JZ''r   c                    | j                   D ]  }t        |      }t        |      }| j                  ||      \  }}| j                  t
        j                  u rn2| j                  t
        j                  u rM|t        j                  u rt
        j                  }d}n|t        j                  u rt
        j                  }d}n| j                  t
        j                  u r&|t        j                  u rt
        j                  }d}n| j                  t
        j                  t
        j                  fv rk|t        j                  u rY| j                  t
        j                  u}| j                  t
        j                  u rt
        j                  nt
        j                  }n| j                  t
        j                   u rJ|t"        j                  u rd}t
        j                   }n|t"        j$                  u rd}t
        j&                  }n| j                  t
        j&                  u rn|t"        j$                  u rd}t
        j&                  }nI|t"        j(                  u rd}t
        j                   }n$|t"        j                  u rd}t
        j&                  }|| _        || _        |du s|| j-                  |      c S | xj.                  |z  c_         | j.                  r| j-                  d       S t1               )NFT)rR   r   r4   rb   rU   r=   rE   rI   r   r#   r$   rJ   r'   rK   rL   r   rF   r-   r.   rH   r/   rT   _breakrS   rW   )rX   	codepointr^   	next_inbcsbra   s         r   __next__zGraphemeIterator.__next__   sE    5	%Ii(E&y1I!66uiHNB
zzV^^+v000J---!'!2!2JBjnn,!'JBv.5J<\<\3\#^^
 

v00&2D2DEEZ:::ZZv'8'88)-v7I7I)IF%%vOaOa  v444	 0 00B!'!6!6J)"2"22B!'!3!3Jv111	 0 00B!'!3!3J)"5"55B!'!6!6J)"2"22B!'!3!3J#DJDJTzRZ{{9--KK9$Kk5	%n ;; ;;t$$or   c                 ,    | j                   }|| _         |S )z/Return the current buffer, start with a new one)rS   )rX   new
old_buffers      r   rd   zGraphemeIterator._break  s    [[
r   N)	r   r   r   strrZ   r\   rb   rh   rd   r   r   r   rN   rN   v   s$    7s 7*<(|=~r   rN   N)enumr    grapheme.grapheme_property_groupr   r   r   grapheme.incb_property_groupr   r-   r4   r   r+   r0   r;   r=   rN   r   r   r   <module>rp      sH     P 6 G Dt 2$j%$*T Z Zr   