o
    Ni?                     @   s  d dl Z d dlZd dlZd dlmZ ddlmZ dd Zdd Z	d	d
 Z
dd Zdd Zddg d d Zg dZg dZg dZg dZddgZg dZdgZdgZdgZdgZdgZg dZg dZd d!gZg d"Zg d#Zi Zg d$ed%< g d&ed'< g d(ed)< g d*ed+< d,d-ged.< g d/ed0< g d1ed2< d3d ged4< d5Z ee e e Z!ee e e Z"g d6Z#g d7Z$g d8Z%g d9Z&g d:Z'd;gZ(g d<Z)d=d>d?d?d@dAdBdCdCdCdCdDZ*g dEZ+g dFZ,g dGZ-g dHZ.g dIZ/g dJZ0g dKZ1g dLZ2dMdNgZ3dOdPgdOdPgg dQg dRdOdPgdPgdSgdPgdOdPgg dTdUgdVgdWgdXZ4dYgdYdZgd[Z5dYgdYgd\gd]Z6dPgdPgdPd^gdPgdPgdPgdPgdPgdPd_gdUgdVgdWgd`Z7g daZ8g dbZ9g dcZ:dd;deZ<df;deZ=d!d!dgdhdiZ>g djZ?g dkZ@g dlZAdmdmdndodpdqdqdlZBdrds ZCdS )t    N)reduce   )FallBackc                 C   sD   | t v rd|  S | tv rd|  S | tv rd|  S | tv r d|  S d S )Nz!aksharamukha.ScriptMap.MainIndic.z!aksharamukha.ScriptMap.EastIndic.zaksharamukha.ScriptMap.Roman.z aksharamukha.ScriptMap.NonIndic.)	MainIndic	EastIndicRomanNonIndic)Script r
   K/home/ubuntu/.local/lib/python3.10/site-packages/aksharamukha/GeneralMap.py
ScriptPath   s   r   c                 C   s
   t  |  S N)globals)charListr
   r
   r   retCharList   s   
r   c                    s*   t t| tdd  fdd| D S )Nc                 S   s   | | S r   r
   )xyr
   r
   r   <lambda>   s    zCrunchSymbols.<locals>.<lambda>c                    s   g | ]}t  |qS r
   )getattr).0Var	ModScriptr
   r   
<listcomp>   s    z!CrunchSymbols.<locals>.<listcomp>)	importlibimport_moduler   r   )Partr	   r
   r   r   CrunchSymbols   s   r   c                 C   sD   z	t t|}W n   dd l}|d| d  Y dS t|| S )Nr   zThe script z cannot be found )r   r   r   logging	exceptionr   )Listr	   r   r   r
   r
   r   
CrunchList   s   
r"   c                 C   s,   d dd tjD }td| d d| S )Nr   c                 S   s   g | ]}d | qS )\r
   )r   r   r
   r
   r   r   )   s    zEscapeChar.<locals>.<listcomp>()z\\\1)joinstringpunctuationresub)Strngpunctr
   r
   r   
EscapeChar(   s   r-   r$   |)u   ᳚u   ॑u   ॒z)?)VowelMapSouthVowelMapModernVowelMapSinhalaVowelMap)VowelSignMapSouthVowelSignMapModernVowelSignMapSinhalaVowelSignMap)	ViramaMapr3   r4   r5   r6   AyogavahaMapNuktaMap)ConsonantMapSouthConsonantMapNuktaConsonantMapSinhalaConsonantMapSignMap
NumeralMapAythamOmMapr7   )1GurmukhiLoCLimbuLoCBengaliRaBaNandinagari	ShahmukhiTamilExtendedMasaramGondiGunjalaGondiDograRanjanaKhojkiGranthaGrantamilMultaniAhomMahajaniSiddhamDevanagari
VatteluttuGranthaPandya	Khudawadi	BhaiksukiSharadaNewaSylotiNagriTakriTirhutaModiKaithi
KharoshthiLepchaChakmaBrahmiMeeteiMayekLimbuAssameseBengali
DevanagariGranthaGujaratiGurmukhiKannada	MalayalamOriya
SaurashtraSinhalaTamilTamilBrahmiTamilGranthaTeluguUrdu)1
DivesAkuru
TibetanLoCBatakLoCThamLoCKhmerLoCShanLoCMakasarKawiPallavaLaoThamLueTham	KhuenThamMarchenSoyomboKhomThai
KhamtiShanTaiLaingMonShanZanabazarSquareRejangLao2BuhidHanunooSiddhamTibetanLaoTaiThamCham	BatakKaroBatakPakpak	BatakSima	BatakToba
BatakMandaLaoPaliPhagsPaBugineseTagbanwaTagalog	SundaneseBalineseBurmeseJavaneseKhmerr   rK   ThaanaThaiBurmeseALALC
OldPersianHebrew)@BatakLoCRomanLoCGurmukhiLoCRomanLoCTibetanLoCRomanLoCLimbuLoCRomanLoCBalineseSimpleRomanLoCBalineseRomanLoCJavaneseSimpleRomanLoCJavaneseRomanLoCBatakKaroRomanLoCBatakMandaRomanLoCBatakPakpakRomanLoCBatakSimaRomanLoCBatakTobaRomanLoCGurmukhiRomanLoCTibetanRomanLoCLimbuRomanLoCKannadaRomanLoCTeluguRomanLoCSinhalaRomanLoCOriyaRomanLoCAssameseRomanLoCBengaliRomanLoCGujaratiRomanLoCDevanagariRomanLoCThamLoCRomanLoCKhmerLoCRomanLoCRomanLoCShanLoCRomanLoCr   r   r   BurmeseRomanLoCRomanSemiticRomanColloquialISOPali	RomanKanaBarahaNorthBarahaSouth	MongolianSLP1WanchoMroIASTPaliHanifiRohingyaAriyakaRomanReadableAksharaa
WarangCitiSoraSompengWX-kokAvestanHKIASTISOItransTitusr   VelthuisWXInterIPA
TolongSikiSantaliRussianCyrillic)r   r   r   r   r   r   r   ISOLOCr   r   r   )rM   rc   rd   re   rg   rh   ri   rj   rk   rm   rn   rq   rr   
IndianMain)
r`   r_   rf   r^   rb   ra   rl   ro   rp   r\   IndianMinority)r   r   r   r   r   r   r   r   r   r   r   r   EastAsianPaliSans)	r   r   r   r   r   r   r   r   r   EastAsianIndFilir   r   IndianAlpha)r   r   r   r   r   RomanDiacritic)r   r   r   r   r   RomanNonDiacriticr   r   r   )
u   ʽ   ·   ¹   ²   ³u   ⁴u   ₁u   ₂u   ₃u   ₄)u   ʼ   ˇ   ˆ   ˘r   )r   r   r   r   )r@   SignsCombiningSigns
VowelSignsVowels
ConsonantsNumerals)ars   rt   rB   rC   rv   rw   rx   rD   r   ry   rE   rz   rF   r{   r   r|   r}   r~   rG   r   rH   rI   r   rJ   r   r   r   r   rL   r   rK   r   r   rM   re   rN   rO   rP   r   r   r   r   rQ   rS   rR   rT   rU   rV   rW   rY   rX   rZ   r[   r\   r]   rq   ri   rj   rg   rd   rk   rh   rn   rc   rl   ro   rf   rp   rm   r   r   rr   r   r   r   r   r   r   rb   r^   r   r   r   r   r_   r   ra   r   r   r   r   r   r   r   r   r   r`   rK   )2r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   u   ੱu   އްu   ّu   𑌂u   ംu   𑈷r   )rh   r   rr   rF   rf   rj   rL   r   r   r   ry   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rn   rh   rj   rq   )rn   ri   rj   rq   rg   )r   r   r   r~   r   r|   r}   ri   rn   rj   rm   rq   ri   rk   rc   rd   rg   re   r   r   r   r   r   r   r   rh   r   rb   )r   r   r   rv   rx   rw   )r   r   rh   rb   r   )r   r   r   r~   r   r|   r}   rv   rx   rw   ri   rq   rm   rk   rc   rd   rg   re   r   r   Batakrh   rB   r   rb   rC   r   rt   rn   rj   AnusvaratoNasalASTISORomanLoCChandrabindu)r   r   MalayalamRomanLoCFixmDotBelowToAbove)r   SinhalaSannakaNasalizationr   GurmukhiRomanLoCFix)r   r   DevanagariRomanLoCFixBalineseRomanLoCFixJavaneseRomanLoCFixTibetanLoCRomanLoCFix)rq   ri   rj   rm   rk   rc   rB   rd   rg   re   r   r   rt   KhandaTaRomanLoCBengaliSubojinedVa)rc   rd   TeluguArasunnaChandrabindu)rc   rd   rq   r   r   )rq   ri   rj   rm   rk   rc   rd   rg   re   r   r   rt   )!zArab-PaSyrjSyrnSyreThaazArab-UrTypezHebr-ArArab-FaLatnArabEthiArmiBrahChrsEgypElymGrekHatrHebrManiNarbNbatPalmPhliPhlpPhnxPrtiSamrSarbSogdSogoUgar))u   ʾbvgjdhwzu   ḥu   ṭr   klmnsu   ʿfu   ṣqru   štu   ḍu   ḏu   ḫu   ġu   ṯu   ẓpu   ču   žu   ɖu   ʈu   ʂu   ɭu   ɲu   ɳu   ɽu   ʰ)au   āiu   īuu   ūu   ēu   ōeo#u   ̽uJ   ꞉ a ā i ī u ū e ē o ō a̮ ̽ ā̮ ĕ ă ŏ aŷ aŵ a aⁿ uⁿ iⁿ uK   ˀā̮̂ ā̮̂ â ā̂ î ī̂ û ū̂ ê ē̂ ô ō̂ âŷ âŵ ˀâ ˀîr
  r  )ISO259	HebrewSBLISO233
PersianDMG)re   rn   rq   ri   rm   rk   rg   rd   rc   rj   rh   )r   r   r   r   r   r   r   r   )r/   r3   r:   r>   r8   r1   r5   u   󰀀u   󲀀u   󳀀u   󴀀u   󵀀c                 C   s2  t D ]}tt|}tt|}tt| }t|	 D ]y\}}|\}}	||	
 v r4| | |	|  q|dkrD| | t||  q|tv rKd}
nd}
|	|
 d dkrXd}n
| | |	|
 d  }t|	|
 dkr|d|	|
 v rv|jd }n|	|
 d }t|	|
 dkr| | | q| | ||  qqd S )	Nr   	OthersRevOthersNonRevr   r   r   nukta)CharmapListsr   fbr   r   r   ordInterAdd	enumerateitemskeysappendchrReversibleScriptslenr9   )script_char_mapfile_scriptcharlistmapping_charr   InterAddIndexnummapngcharmappingmapchar
first_charsecond_charr
   r
   r   add_additional_chars.  s2   
rY  )Dr   r'   r)   	functoolsr   r   r   rC  r   r   r   r"   r-   r&   VedicSvarasVedicSvarasListr   VowelSignsNVr   r   r   r   r   r@   omviramar   r   r   r   r   ScriptCategoryr   
CharactersCharactersNV
DiacriticsDiacriticsRemovableDiacriticsRemovableTamil	ScriptAllIndicScriptsSiddhamRanjanaLatinScripts
GeminationpipeScriptsTransliterationromanNumeralScriptsromanPunctscripts
LoCScripts
LocPostPre	LoCSrcMap	LoCTgtMap	LoCTgtISOLoCTgtPostOptionsLoCTgtPreOptionsLoCSrcPostOptionsLoCSrcPreOptionsSemiticScriptsSemiticConsonantsSemiticVowelssplitsemiticVowelsAllvowelsInitialAll
semiticISOrK  RomanReversiblerB  rE  rY  r
   r
   r
   r   <module>   s   
a

