
    G>i+                     H    S SK r Sr  S	S jrS rS
S jrSS jrS rSS jrg)    Nz;[\u1CD0-\u1CE8\u1CF9\u1CFA\uA8E0-\uA8F1\u0951-\u0954\u0957]c                 N   Uc  UnU R                  U5      n/ n[        U S   R                  5       5      nU[        U S   R                  5       5      -   n	Sn
[        U5       H  u  pUR	                  U5      (       a  Sn[        [        U5      S-
  SS5       H  nX~   nUS   U	;   d  M  Un  O   US:X  a  U(       d  X-  n
OX}==   U-  ss'   U(       d  UR                  USS 5        M  UR                  U5        M  UR                  U5        M     U R                  U5      nX-   $ )u  
modify text by moving old_accent from its current position to the preceding syllable's vowel or yogavaaha (a semi-vowel or special character that behaves like a vowel) in the form of new_accent. See test cases for example use.

:param scheme: 
:param text: 
:param old_accent: 
:param new_accent: 
:param drop_at_first_syllable: Should text like "ॗसैषा᳘" be produced?
:param retain_old_accent: 
:return: 
Nvowels
yogavaahas    r   )	split_vyanjanas_and_svaraslistvalues	enumerateendswithrangelenappendjoin_strings)schemetext
old_accent
new_accentdrop_at_first_syllableretain_old_accentlettersout_lettersr   vowels_yogavaahasaccent_carryoverindexlettervowel_positioniprev_letters                   u/var/www/html/land-tabula/venv/lib/python3.13/site-packages/indic_transliteration/sanscript/schemes/brahmic/accent.pyadd_accent_to_previous_syllabler"      s1    J--d3'+x '')*&tF<$8$?$?$ABB )mez""nS%)2r2!!nq>...
	 3
 
2	%

(
#z1#6#2;'6" % *& 
		[	)$		      c                     UR                  SS5      n[        R                  " SSU5      n[        R                  " SSU5      nSnSn[        XX#S	9nU$ )
z
Limitations: Does not handle eliding udAtta-s occuring in a series. It is assumed that such are pre-elided

:param text: 
:return: 
u   ꣡u   ᳘u   ᳘([ंःँ])u   \1᳘u   [ँꣳ]u   ᳫंu   ॗu   ᳡r   r   r   r   )replaceregexsubr"   r%   s       r!   to_shatapatha_svarar)   2   sT     
eU	#$	%x	6$	:x	.$**	(j	p$	+r#   c                     SR                  U R                  5       5      n[        R                  " SU SU S3SU S3U5      nU$ )Nr   z([z])([^z]+)$z\1z\2)joinget_lettersr'   r(   )r   r   accentr   s       r!   add_accent_to_endr.   D   sH    GGF&&()'	RygYd3s6(#5F	M$	+r#   c                     SR                  U R                  U R                  -   [        U S   R	                  5       5      -   5      n[
        R                  " SU S3X!5      nU$ )Nr   r   z(?<=[u   ]+)॑)r+   long_vowelslong_vowel_marksr
   r   r'   r(   )r   r   r-   vowel_strings       r!   set_diirgha_svaritasr3   J   sX    ++f.E.EEVT`MaMhMhMjHkkl,	U<./	>$	+r#   c                 :    [         R                  " [        SU 5      $ )Nr   )r'   r(   ACCENTS_PATTERN)r   s    r!   strip_accentsr6   P   s    	?B	--r#   c           
      	  ^ ^ SnSn[        U 4S jXvSS4 5       5      (       d  T $ [        U 4S jX24 5       5      (       a  T $ [        R                  " SUT 5      m US:X  a  S	S
KJn  UR
                  UR                     n[        R                  " U5      n	[        R                  " U5      n
[        R                  " SSU5      nUR                  T US9n[        U5      n [        U5       GH  u  pUS	:X  d  U	R                  XS-
     5      (       a^  UR                  US-
  USU	S9nUbD  X}U   ;   a<  US:  a&  UUS-
     S   UUS-
     -   S;   a  UU==   U-  ss'   OUU==   U-  ss'   SnOSnW(       d  M  UR                  US-
  USU	S9nU(       d  M  Uc  M  UU   m[        U4S jX7U4 5       5      (       a  SnM  X-U   ;  a  UU==   U-  ss'   UR                  UUSU	S9nU(       d  GM  Ub  M[  GM     [        U5       HW  u  pU
R                  U5      (       a  M  X;   d  M$  Xo;  d  M+  UR                  XSU	S9nUc  MA  XmU   ;   d  MK  X==   U-  ss'   MY      [        U5       Hq  u  pX;   =(       a    Xo;   nU
R                  U5      (       a  M,  U(       d  M5  X-   X'   UR                  XSU	S9nUc  MQ  XmU   ;   d  M[  X   R                  US5      X'   Ms      [        U5       H  u  pU
R                  U5      (       a  M  X;  a  M$  UR                  XSU	S9nUc  M:  UU   m[        U4S jXsU4 5       5      (       a  M]  X-U   ;  a  UU==   U-  ss'   UR                  UUSU	S9nUb  MO  M      [        U5       H  u  pU
R                  U5      (       a  M  Xo;   d  M$  UR                  US5      X'   UR                  XSU	S9nUc  MN  UU   mUT;   a  M[  [        U4S jX7U4 5       5      (       a  My  X-U   ;  a  UU==   U-  ss'   UR                  UUSU	S9nUb  MW  M      [        U5       H]  u  pU
R                  U5      nU(       d  M  [        UR!                  S5      XX4US9nUR                  UR!                  S5      U5      X'   M_     UR#                  U5      m T R                  US5      R                  US5      m T $ )u  Given text like  
ध्रु॒वो॑ऽसि ।  
ध्रु॒वो॒॑ऽहँ स॑जा॒तेषु॑ भूयास॒न्  
धीर॒श् चेत्ता॑ वसु॒वित्। 
produce something like:
ध्रुवो᳕ऽसि ।  
ध्रुवो꣡ऽहँ꣡ सजाते꣡षु भूयासन्  
धी꣡रश् चे꣡त्ता वसुवि꣡त्। 
u   ॒u   ॑c              3   ,   >#    U  H	  oT;   v   M     g 7fN .0xr   s     r!   	<genexpr> to_US_accents.<locals>.<genexpr>a   s     C B1$Y B      ᳚u   ᳛c              3   ,   >#    U  H	  oT;   v   M     g 7fr9   r:   r;   s     r!   r>   r?   d   s     21qd1r@   u   [᳖᳚᳛]Nr   )	sanscriptz(?<=^|[^\\])\(z(?:)skip_patternr   )pauses_pattern   r   )u	   ्य्FTc              3   ,   >#    U  H	  oT;   v   M     g 7fr9   r:   r<   r=   syllable_to_checks     r!   r>   r?           Q/P!%%/Pr@   r   c              3   ,   >#    U  H	  oT;   v   M     g 7fr9   r:   rH   s     r!   r>   r?      s     O-N##-Nr@   c              3   ,   >#    U  H	  oT;   v   M     g 7fr9   r:   rH   s     r!   r>   r?      rJ   r@   )r   r   UDATTASVARITA_NEWpausesrD   )anyr'   r(   indic_transliterationrC   SCHEMES
DEVANAGARIcompiler	   r
   r   	fullmatchget_adjacent_syllable_indexr&   matchto_US_accentsgroupr   )r   r   rM   rN   rO   rD   	SANNATARASVARITArC   PAUSES_PATTERNSKIP_PATTERNskip_pattern_noncapturer   r   r   r   first_vowel_indexmark_udAttacurr_fwd_index
prev_indexis_kampacurr_back_indexrW   replacementrI   s   `                       @r!   rX   rX   T   sU    )'	CUE BC	C	CK2[1222K	='4	0$t^/y334F==(.|,, "II&7M--dAX-Y' W+  -mez^--k'.BCC <<U1WkSUft<u		&7BS6T+Tq [1B11D%Eb%IKXijkXkLl%lp}%}
'
(K
7
(
'
(F
2
( {99%';PRcq9rnKN6'7Qi/PQQQ+
^44
n
%
/
%;;NKY[KY < [ KN6# .@ !-mef%% !455e"]k5lj		IZ1H$Hk) .  -me 8Y%8H f%% x!?k55e"]k5lj		IZ1H$H(/77D .  -mef%% 
 88R`n8oO

%%o6	OgI-NO	O	O 
?3	3O$.$::?KY[JX ; Zo 
% .4  -mef%% !>>)R8k 99%bao9pn&'7''
Qi/PQQQ
^44
n
%
/
%;;NKY[KY < [ & .4  -mev&Eu!u{{1~fal  KW  Xk!>>%++a.+Fk	 . 
		[	)$	gr	"	*	*9b	9$	+r#   )NFF)u   ᳟)rA   )Nu   ᳓u   ᳙u   [।॥\n,;]+z\+\+\+\((.+?)\)\+\+\+)r'   r5   r"   r)   r.   r3   r6   rX   r:   r#   r!   <module>rf      s7    P gl6;)!X$.dr#   