
    )i}                     	   S r  SrSSKrSSKrSSKr0 r0 rSrSrSr	0 q
S r\" 5         S r " S S	\5      r " S
 S\5      r " S S\5      r0 4S jr  " S S\5      r " S S\5      r " S S\\5      r " S S\\5      r \" S\" \" SS5      5      5        0 SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)_S*S+_S,S-_S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_0 S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_SHSI_SJSK_SLSM_SNSO_SPSQ_SRSS_STSU_SVSW_SXSY_SZS[_S\S]_E0 S^S__S`Sa_SbSc_SdSe_SfSg_ShSi_SjSk_SlSm_SnSo_SpSq_SrSs_StSu_SvSw_SxSy_SzS{_S|S}_S~S_ESSSSSSS.Er\" SS\5        0 SS_SS_SS_SS_SS_S S!_SS!_S"S#_S$S%_SS%_S&S'_S(S)_SS)_SS+_SS+_SS-_SS-_0 S.S1_S2S3_S4S7_S8S9_S:S;_S<S=_S>S?_S@SA_SSC_SDSE_SSG_SFSE_SSG_SHSI_SJSK_SSM_SNSO_E0 SPSQ_SRSS_STSU_SVSW_SXSY_SZS[_S\S]_S^S__S`Sa_SdSe_SfSg_ShSi_SjSk_SlSm_SnSo_SpSq_StSu_E0 SvSw_SxSy_SSy_SS{_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_ESSSSSSSCSSMS.	Er SSSS.r\" SS\\5        0 \" S5      S_\" S5      S_SS_\" S5      S!_S"S#_\" S5      S%_S&S'_\" S5      S)_\" S5      S+_\" S5      S-_S.S1_S2S3_S4S7_S8S9_S:S;_S<S=_S>S?_0 S@SA_\" S5      SC_SFSE_SSG_SHSI_SJSK_\" S5      SM_\" S5      SO_\" S5      S-   SQ_\" S5      SS_\" S5      S-   SU_\" S5      SW_SXSY_SZS[_S\S]_S^S__S`Sa_E0 SdSe_SfSg_ShSi_SjSk_SlSm_SnSo_SpSq_StSu_SvSw_S|S}_SxSy_\" S5      S{_\" S5      S_SS_SS_SS_S6\" S5      -   S_ESSSSSSSSSSSSS.Er\" SS\5         \" S\" \" SS5      5      5        0 \" S5      S_S S_SS_SS_SBS_SRS_S0S_\" S5      S_SS_S$S_SLS_SS_SvS_SS_SVS_S6S_SS_0 S*S_S~S_SNS_S(S_SS_SS_SS_\" S5      S_\" S5      S_\" S5      S_\" S5      S_SS_\" S5      S_\" S5      S_\" S5      S_\" S5      S_SS_E0 ShS_SxS_S>S_S\S_S.S_\" GS 5      GS_SzGS_S"GS_SHGS_S:GS_StGS_SlGS_S`GS_S4GS	_SdGS
_SpGS_SGS_ESXGSS&GSGSGSSGSSDGS\" GS5      GS\" GS5      GS\" GS5      GSSnGS\" GS5      GS\" GS5      GS\" GS5      GS\" GS 5      GS!0Er\" SGS"\5        GS%GS# jr\ GS$:X  a  \RB                  " \" 5       5        gg(&  az  Transliterate texts between unicode and standard transliteration schemes.

Transliterate texts between non-latin scripts and commonly-used latin
transliteration schemes. Uses standard Unicode character blocks -- 
e.g. DEVANAGARI U+0900 ... U+097F -- and transliteration schemes -- 
e.g. the IAST convention for transliteration of Sanskrit to latin-with-dots.

The following character blocks and transliteration schemes are included:

DEVANAGARI
    IAST
    ITRANS -- http://www.aczoom.com/itrans/#itransencoding (Sanskrit only)
    Harvard Kyoto
    
CYRILLIC
    ISO 9:1995 (Russian only)
    
New character blocks and transliteration schemes can be added by creating
new CharacterBlock and TransliterationScheme objects.

COMMAND LINE USAGE
----------------------------

python transliterator.py text inputFormat outputFormat

... writes the transliterated text to stdout

text -- the text to be transliterated OR the name of a file containing the text
inputFormat -- the name of the character block or transliteration scheme that
               the text is to be transliterated FROM, e.g. 'CYRILLIC', 'IAST'.
               Not case-sensitive
outputFormat -- the name of the character block or transliteration scheme that
               the text is to be transliterated TO, e.g. 'CYRILLIC', 'IAST'.
               Not case-sensitive
               
USAGE
--------
Transliterate a text:

>>> from indic_transliteration.little import transliterator
>>> transliterator.transliterate('yogazcittavRttinirodhaH', 'harvardkyoto',
...     'devanagari', {'outputASCIIEncoded' : True})
'&#x92f;&#x94b;&#x917;&#x936;&#x94d;&#x91a;&#x93f;&#x924;&#x94d;&#x924;&#x935;&#x943;&#x924;&#x94d;&#x924;&#x93f;&#x928;&#x93f;&#x930;&#x94b;&#x927;&#x903;'

Create a new CharacterBlock and TransliterationScheme:

>>> from indic_transliteration.little import transliterator
>>> cb = transliterator.CharacterBlock('NEWBLOCK', range(0x901, 0x9FF))
>>> scheme = transliterator.TransliterationScheme(cb.name, 'NEWSCHEME',
...                          {'ab': 0x901, 'cd': 0x902})
>>> transliterator.transliterate('abcd', scheme, cb, {'outputASCIIEncoded' : True})
'&#x901;&#x902;'

COPYRIGHT AND DISCLAIMER
------------------------------------
Transliterator is:

version 0.1 software  - use at your own risk.

The IAST, ITRANS and Harvard-Kyoto transliteration schemes have been
tested for classical Sanskrit, not for any other language.

The Cyrillic alphabet and ISO 9:1995 transliteration (for Russian only)
are included but have been even more lightly tested than Devanagari.

Copyright (c) 2005 by Alan Little

By obtaining, using, and/or copying this software and/or its
associated documentation, you agree that you have read, understood,
and will comply with the following terms and conditions:

Permission to use, copy, modify, and distribute this software and
its associated documentation for any purpose and without fee is
hereby granted, provided that the above copyright notice appears in
all copies, and that both that copyright notice and this permission
notice appear in supporting documentation, and that the name of 
the author not be used in advertising or publicity pertaining to 
distribution of the software without specific, written prior permission.

THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR 
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
       
z0.1    N      c                  <    SSS[         SS.n U R                  5       qg)z'Reset options to their default values. zutf-8?F)inputEncodingoutputEncodingsubstituteCharhandleUnrecognisedoutputASCIIEncodedN)UNRECOGNISED_ECHOcopyoptions)defaultOptionss    x/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/indic_transliteration_unmaintained/little/transliterator.pyresetOptionsr   |   s*     ""0$N !!#G    c                 l    [         S   [        :X  a  U $ [         S   [        :X  a	  [         S   $ [        U 4e)z Handle unrecognised characters. r
   r	   )r   r   UNRECOGNISED_SUBSTITUTEKeyError)chrs    r   _unrecognisedr      s;    #$(99
	%	&*A	A'((or   c                   $    \ rS rSrSrS rS rSrg)TLCharacter   a<  Class representing a Unicode character with its equivalents.

Public attributes:
unicodeHexValue -- the numeric value of the Unicode code point.
chr -- the character value of the Unicode code point.
name -- the name of the Unicode code point.
equivalents -- a dict containing the character's equivalents in 
               various transliteration schemes, in the format:
               {'Scheme A': 'A', 'Scheme B': 'aah', }
               where keys are TransliterationScheme names,
               values are transliterated equivalents of the 
               character.

c                     US:  d  US:  a  [         S4eXl         [        U R                  5      U l        [        R                  " U R                  5      U l        0 U l        X l        g)a  Set up a unicode character.

Arguments:
unicodeHexValue -- an integer that should correspond to a 
                   Unicode code point.
block -- the CharacterBlock this character belongs to.

Raises:
ValueError -- if unicodeHexValue is not a valid code point.

r   i z#numeric value outside Unicode rangeN)
ValueErrorunicodeHexValuer   unicodedatanameequivalents_block)selfr   blocks      r   __init__TLCharacter.__init__   sa     Q/H"<DEE.	 t++,$$TXX.	r   c                      X R                   U'   g)zAdd an equivalent for the character.

Arguments:
equivName -- the name of a TransliterationScheme
equivalent -- string/unicode equivalent in the named
              TransliterationScheme for this code point.
N)r    )r"   	equivName
equivalents      r   addEquivalentTLCharacter.addEquivalent   s     '1#r   )r!   r   r    r   r   N)__name__
__module____qualname____firstlineno____doc__r$   r)   __static_attributes__ r   r   r   r      s    .1r   r   c                   <    \ rS rSrSr\4S jrS rS rS r	S r
Srg	)
CharacterBlock   a  Dictionary-like representation of a set of unicode characters.

For our purposes, a character block corresponds to an alphabet/script
that we want to be able to transliterate to or from, e.g. Cyrillic,
Devanagari.

Keys are unicode characters.
Values are TLCharacter instances.

c                      UR                  5         U H  n U" X@5      nXPUR                  '   M     SU l        Xl        0 U l        U R                  5         g! [         a     MP  f = f)a  Set up a character block corresponding to a range of code points.

Keyword arguments:
name -- a string containing the name of the character block.
        (should normally use a standard Unicode character block name)
range -- a list of code points. Reserved code points are ignored.
charClass -- the class to be used to create the characters.
             Should be a subclass of TLCharacter.

r   N)sortr   r   _longestEntryr   transliterationSchemes	_register)r"   r   	charRange	charClassctlchars         r   r$   CharacterBlock.__init__   sm    	
 	A"1+#)VZZ   	&(#  s   A
A%$A%c                 l    U [         U R                  '   U [        U R                  R                  5       '   g N)characterBlocksr   _namesupperr"   s    r   r9   CharacterBlock._register   s%    %)		"$(tyy !r   c                    / nU HT  nUR                  5       (       a  UR                  U5         UR                  X   R                  UR                     5        MV     U$ ! [         a    UR                  [        U5      5         M  f = f)z<Transliterate the text to the target transliteration scheme.)isspaceappendr    r   r   r   )r"   text	outFormatresultr<   s        r   _transliterateCharacterBlock._transliterate   sr    Ayy{{FMM!,0dg11)..AB    0mA./0s   *A$BBc                     U$ )z:Make our signature compatible with TransliterationScheme. r1   )r"   rI   s     r   _preprocessCharacterBlock._preprocess   s    r   c                 
    X   $ r@   r1   r"   rI   startPoss      r   _getNextCharCharacterBlock._getNextChar  s
    ~r   )r7   r   r8   N)r+   r,   r-   r.   r/   r   r$   r9   rL   rO   rT   r0   r1   r   r   r3   r3      s%    	 3> >)	r   r3   c                   F    \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rSrg)TransliterationSchemei  a/  Dictionary-like representation of a transliteration scheme.

e.g. the Harvard-Kyoto, IAST or ITRANS schemes for
transliterating Devanagari to or from the latin alphabet.

Keys are unicode strings representing the letter-equivalents used
in the transliteration scheme.
Values are TLCharacter instances.

Nc                    [         U   U l        X l        UR                  5        H=  u  pVU R                  [	        U5         X'   X   R                  U R                  U5        M?     [        UR                  5        Vs/ s H  n[        U5      PM     sn5      U l	        U R                  S:  ai  0 U l
        [        UR                  5       5      U l        U R                  R                  5         U R                  S[        U5      S-
  SU R                  5        Ub  [        U[         5      (       d  ["        eX@l        U R'                  5         gs  snf )a  Set up a transliteration scheme.

Keyword arguments:
blockName -- a string containg the name of the character block this 
             transliteration scheme is used for, 
             e.g. 'CYRILLIC', 'DEVANAGARI'.
schemeName -- the name of the transliteration scheme. 
              Must be unique.
data -- a dict containing the data for the transliteration scheme. 
        Keys are transliterated Unicode characters or strings.
        Values are integers corresponding to Unicode code points.
        For examples, see the data for the built-in transliteration
        schemes.
swapTable -- a dict (default None) containing any non-standard
             letter combinations used in the transliteration scheme
             that we want to pre-process away before transliterating.
             See the ITRANS data for examples.

Raises:
KeyError: unknown block name.
TypeError: swapTable is not a dict
        
r   r   N)rA   r#   r   itemsr   r)   maxkeyslenr7   
_parseTreelist
_parsedatar6   _setupParseTree
isinstancedict	TypeError	swapTabler9   )r"   	blockName
schemeNamedatard   equivr   es           r   r$   TransliterationScheme.__init__  s    0 %Y/
	&*jjl"E**S%9:DKK%%dii7 '3 !$))+!>+Q#a&+!>?! DO"499;/DOOO  "  CIM1dooF i..y0A" "?s   =Ec                     X R                   R                  U R                  '   U [        U R                  R	                  5       '   g r@   )r#   r8   r   rB   rC   rD   s    r   r9   TransliterationScheme._register;  s-    7;

))$))4$(tyy !r   c                 <   X0R                   :X  a  gSnUnXb::  a  U[        U R                  U   5      :  aZ  U R                  U   U   nXu:w  a&  0 XG'   Ub  U R                  XS-
  US-   XE   5        UnUnXb:X  a  U R                  XUS-   XE   5        US-   nXb::  a  M  gg)z=Build the search tree for multi-character encodings.
        Nr   )r7   r\   r_   r`   )r"   rowFromrowTocolIndextreeprevcharrowIndexr<   s           r   r`   %TransliterationScheme._setupParseTree?  s     )))#dooh788OOH-h7= DG ,,,WlHqLRVR`a&G H$((HqL$.Y!|H r   c                     UnX   nU[        U5      S-
  :  a/   XS-      X1U      ;   a  XPR                  XS-   X1U      5      -   nU$ U$ ! [         a     U$ f = fNr   )r\   #_TransliterationScheme__getNextCharr   )r"   rI   rS   rq   imatcheds         r   __getNextChar#TransliterationScheme.__getNextCharS  s{    's4y1}A;$Aw-/%(:(:4QRSW(VVG w  s   ,A
 

AAc                     U R                   S:  a3  X   R                  5       (       d  U R                  XU R                  5      $ X   $ rv   )r7   rG   rw   r]   rR   s      r   rT   "TransliterationScheme._getNextChar_  s?    !$.*@*@*B*B%%ddooFF>!r   c                     U R                   (       a1  U R                    H!  nUR                  X R                   U   5      nM#     U$ r@   )rd   replace)r"   rI   r<   s      r   rO   !TransliterationScheme._preprocesse  s3    >>^^||A~~a'89 $r   c                    / nU R                  U5      nSnU[        U5      :  a~  X   R                  5       (       a  UR                  X   5        US-   nO=U R	                  X5      n UR                  X   R
                  5        U[        U5      -   nU[        U5      :  a  M~  U$ ! [         a    UR                  [        U5      5         NGf = f)z"Transliterate the text to Unicode.r   r   )rO   r\   rG   rH   rT   r   r   r   )r"   rI   rJ   rK   rx   r   s         r   rL   $TransliterationScheme._transliteratel  s    %#d)mw  dg&aC''06MM$)--0 CL #d)m    6MM-"456s   'B% %$CC)r7   r]   r_   r#   r   rd   r@   )r+   r,   r-   r.   r/   r$   r9   r`   rw   rT   rO   rL   r0   r1   r   r   rW   rW     s+    	&P)$(
"r   rW   c                   ^ S n [         R                  U5         [        [        4m U4S jnU" U5      nU" U5      n [	        U T5      (       d  [
        S4eS nU" U5      nU" U5      nXxLa  [        S4eXL aO  UR                  S:X  a?  [        U 5       V	s/ s H  oR                  5       (       a  M  X   PM       n	U [        5         $  UR                  X5      n
[         S   (       a  U
 V	s/ s H
  o" U	5      PM     n
n	SR                  U
5      R                  [         S	   5      [        5         $ s  sn	f s  sn	f ! [        5         f = f)
a  Transliterate a text.

Keyword arguments:
text -- a unicode string containing the text to be transliterated
inFormat -- the "from" CharacterBlock or TransliterationScheme, or its name
outFormat -- the target CharacterBlock or TransliterationScheme, or its name
requestOptions -- optional dict containing option settings that override the
                  defaults for this request.

Returns a unicode object containing the text transliterated into the
target character set.

Raises:
ValueError -- unrecognised input or output format.
KeyError -- a character in text is not a member of inFormat, or has no
corresponding character defined in outFormat.

c                 2    [        U 5      nUS:  a  SU-  $ U $ )N   z&#x%x;)ord)r   values     r   asciiEncode"transliterate.<locals>.asciiEncode  s"    C3;u%%
r   c                    > [        U T5      (       a   [        U R                  5          n U $ U $ ! [         a    [        SU -   4ef = f)Nzunrecognised format )ra   rB   rC   r   r   )fmt
basestrings    r   
findFormat!transliterate.<locals>.findFormat  sU    #z**E -C J3J   E%'='CDDEs	   / Az-The text must be a string or a unicode objectc                 H    [        U [        5      (       a  U $ U R                  $ r@   )ra   r3   r#   )formats    r   getBlocktransliterate.<locals>.getBlock  s    &.11||#r   z%incompatible input and output formatsr   r    r   )r   updatestrbytesra   rc   r   r7   setrG   r   rL   joinencode)rI   inFormatrJ   requestOptionsr   r   r   inBlockoutBlockr<   rK   r   s              @r   transliterater     s8   &/~&C 5\
4	 h'y)	&$
++ "QRR	$
 8$I&"FGG %%*&)$iCiyy{iC 	 	,((9'(.45fk!nfF5xx&&w/?'@A D 6 	s6   BD= D35D3=D= $D= /D8 (D= 3
D= =E	c                   `    \ rS rSrSr Sr\" SS5      r\" SS5      rSr	S	r
 S
rSrS rS rSrg)DevanagariCharacteri  z3Special processing for Devanagari characters. 
    8   i>	  iM	  i	  	  u   ्u   अ=	  P	  c                    SU l         U[        R                  ;   a  SU l         SU l        U[        R                  ;   a6  U[        U[        R                  -
  5         nUR                  U5        [        e[        R                  XU5        SU l        U R                   S:X  aW  U R
                  R                  5       (       a7  U R                  [        R                  [        R                  4;  a  SU l        gggg)am  Create an object representing a Devanagari character.

Extends TLCharacter.__init__ to distinguish Devanagari standalone
vowels, dependent vowels and consonants.

Raises 
ValueError -- for characters in the Devanagari dependent vowel range.
              We want these as variants of the corresponding standalone 
              vowels, not as separate characters.

FTN)isVowelr   _vowelRange_dependentVowel_depVowelRanger   _vowelOffset_setDependentVowelr   r   r$   isConsonantisalphar   	_AVAGRAHA_OM)r"   r   r#   vowels       r   r$   DevanagariCharacter.__init__  s     1===DL#1@@@ #o0C0P0PPQRE$$_5TE: <<5 HH  )<)F)F;N;R;R)T T#DT  !r   c                     Ub?  U R                   (       d  [        e[        U5      U l        X R                  [        U5      '   g g r@   )r   r   r   r   r!   )r"   r   s     r   r   &DevanagariCharacter._setDependentVowel  s7    &<<
!3#&#7D 04KKO,- 'r   )r   r   r   N)r+   r,   r-   r.   r/   r   ranger   r   _VIRAMA	_LETTER_Ar   r   r$   r   r0   r1   r   r   r   r     sQ    
 !L5%(Nu%KGI I
C$@5r   r   c                       \ rS rSrSrS rSrg)_Devanagarii  z;Holder class for the Devanagari transliteration algorithm. c                 J  ^ ^^^^^	 UUUUU	U 4S jnU 4S jn/ m	T R                  U5      nSnSmSmT R                  X5      mU[        T5      -   nU[        U5      :  a=  T R                  X5      mU" 5         U[        T5      -   nTmTmSmU[        U5      :  a  M=  U" 5         T	$ )zTransliterate a devanagari text into the target format.

Transliterating a character to or from Devanagari is not a simple 
lookup: it depends on the preceding and following characters.
c                  :  > TR                  5       (       a  TR                  T5        g TT	;   a  T	T   n OS n TT	;   a  T	T   nOS n TR                  T	T   U UT	R                  5      nU H  nTR                  U5        M     g ! [         a    [        T5      n N2f = fr@   )rG   rH   _equivalent
_implicitAr   r   )
prevnextrh   ri   curMatch	nextMatchrJ   	prevMatchrK   r"   s
       r   	getResult-_Devanagari._transliterate.<locals>.getResult  s    !!h'D ID I0!--d8n<@<@<@OOM a    0%h/0s   !B BBc                 <   > TR                   S:X  a  g[        U 5      $ rv   )r7   r\   )r<   r"   s    r   incr(_Devanagari._transliterate.<locals>.incr*  s    !!Q&q6Mr   r   N)rO   rT   r\   )
r"   rI   rJ   r   r   rx   r   r   r   rK   s
   ` `   @@@@r   rL   _Devanagari._transliterate  s    	! 	!,	 %		$$T-H#d)m))$2IKC	N"A I HI #d)m 	r   r1   N)r+   r,   r-   r.   r/   rL   r0   r1   r   r   r   r     s
    F1r   r   c                   *    \ rS rSrSrS rS rS rSrg)DevanagariCharacterBlockiB  zDClass representing the Devanagari Unicode character block.
    
    c                 H    [         R                  XU[        5        SU l        g)zSet up the Devanagari character block.

Extends CharacterBlock.__init__ by specifiying that the characters
created should be instances of DevanagariCharacter.

TN)r3   r$   r   r   )r"   r   r:   s      r   r$   !DevanagariCharacterBlock.__init__G  s     	I7JKr   c                 .    [         R                  XU5      $ z;Need to specify which superclass _transliterate() to call. r   rL   r"   rI   rJ   s      r   rL   'DevanagariCharacterBlock._transliterateR      ))$i@@r   c                    / nUR                   S:X  ad  UR                  UR                  5        UR                  (       a6  Ub  UR                  (       d  Uc  UR                  [        R
                  5        U$ Ub  UR                  S:X  a  UR                  UR                  5        U$ UR                  b  UR                  UR                  5        U$ )z~Transliterate a Latin character equivalent to Devanagari.

Add VIRAMA for ligatures.
Convert standalone to dependent vowels.

F)r   rH   r   r   r   r   r   r"   charr   r   	implicitArK   s         r   r   $DevanagariCharacterBlock._equivalentV  s     <<5 MM$((#"t'7'7|199:  |t//58dhh'  ''3MM$"6"67r   r   N	r+   r,   r-   r.   r/   r$   rL   r   r0   r1   r   r   r   r   B  s    Ar   r   c                   .    \ rS rSrSrSS jrS rS rSrg)	DevanagariTransliterationSchemeim  z8Class representing a Devanagari transliteration scheme. Nc                 @    [         R                  XX#U5        SU l        g)zUSet up a Devanagari transliteration scheme.

Extends TransliterationScheme.__init__

FN)rW   r$   r   )r"   re   rf   rg   rd   s        r   r$   (DevanagariTransliterationScheme.__init__p  s      	&&*I	?r   c                 .    [         R                  XU5      $ r   r   r   s      r   rL   .DevanagariTransliterationScheme._transliterate{  r   r   c                    Sn/ nUR                   [        R                  :w  a(  UR                  UR                  U R
                     5         U(       a  UR                  (       au  Ub/  UR                   [        R                  :w  a  UR                  (       a  Uc@  UR                  [        S   [        R                     R                  U R
                     5        U$ )z^Transliterate a Devanagari character to Latin.

Add implicit As unless overridden by VIRAMA.

F
DEVANAGARI)
r   r   r   rH   r    r   r   r   rA   r   r   s         r   r   +DevanagariTransliterationScheme._equivalent  s     	88*222MM$**49956T))HH+333<MM/,7'1133>;tyyJ Kr   r   r@   r   r1   r   r   r   r   m  s    C Ar   r   r   i 	  i	  Mi	  Hi	  ai	  Ai	  rx   i	  Ii	  ui		  Ui
	  Ri	  lRi	  ri   i	  Ei	  aii	  oi	  Oi	  aui	  kr   khi	  gi	  ghi	  Gi	  r<   i	  chi	  ji	  jhi	  Ji	  Ti	  Thi 	  Di!	  Dhi"	  Ni#	  ti$	  thi%	  di&	  dhi'	  ni(	  n2i)	  pi*	  phi+	  bi,	  bhi-	  mi.	  yi/	  ri0	  r2i1	  li2	  Li3	  vi5	  zi6	  zhi4	  Si7	  i8	  i9	  id	  ie	  r   r   )sh...'oMHARVARDKYOTOz.nz.maaiiuuRRizR^iLLizL^iz~NCChz~nwshShr  r  z.aOMAUMr  r  0if	  1ig	  2ih	  3ii	  4ij	  ik	  il	  im	  in	  io	  )	56789z.hzN^shhJNzj~nkSh)GYdnyxITRANSiC  i%  i  i+  ik  i[  i7  iE  chh   im  i  iG  i[  ic  r  )r  r  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  IASTCYRILLICi   i     i  i  Bi  Vi  i  i  i  i}  i  Zi  i  i  Ki  i  i  i  i  Pi  i   i!  i"  i#  Fi$  i%  i&  i  i'  i`  i(  i\  i)  i  i*  Yi+  i  i,     i-     i.     i/  i0  i1  i2  i3  i4  i5  i~  i6  i7  i8  i9  i:  i;  i<  i=  i>  i?  i@  iA  iB  iC  fiD  iE  iF  i  iG  ia  iH  i]  iI  iK     iM     iN     iO     iQ  ISO9RUSc                 J   [        [        SSS5      5        U c  [        R                  n  U SS u  pnUR                  5       nUR                  5       n [        U5      nSnUR                  5        HQ  n[        U5      S:  a:  UR                  S5      (       d$  [        [        XU5      R                  S	5      5        US-   nMS     UR                  5         g! [         a    [        [
        R                  5         gf = f! [         a    [        [        XU5      5         gf = f)
a^  Call transliterator from a command line.

python transliterator.py text inputFormat outputFormat

... writes the transliterated text to stdout

text -- the text to be transliterated OR the name of a file containing the text
inputFormat -- the name of the character block or transliteration scheme that
               the text is to be transliterated FROM, e.g. 'CYRILLIC', 'IAST'.
               Not case-sensitive
outputFormat -- the name of the character block or transliteration scheme that
               the text is to be transliterated TO, e.g. 'CYRILLIC', 'IAST'.
               Not case-sensitive

zjaya gaNeza! zrIrAmajayamharvardkyoto
devanagarir      r   r   #
)printr   sysargvr   mainr/   rC   open	readlinesr\   
startswithstripcloseIOError)rS  rI   r   rJ   rE  rx   s         r   rT  rT    s     
=4nlST|xx$(1I!	 ~~H!IJ KKMD4y1}T__S%9%9}TY?EEdKLAA " 	
	'  t||  }TY78s#   C D  #C=<C= D"!D"__main__r@   )"r/   __version__r   doctestrR  rA   rB   UNRECOGNISED_FAILr   r   r   r   r   objectr   rb   r3   rW   r   r   r   r   r   r^   r   r  r5  
_swapTabler   r8  _ISO9RUSrT  r+   exitr1   r   r   <module>rc     s  Wp    
	     $ /16 /1b?T ?DuD up =? HV85; 85t4& 4n(~{ (V$&;[ $N tE%,?'@ A::: : 	:
 : : : : : 	%: : : 	%: : :  	%!:" #:$ 	%%:& ':( 	%):* +:, -:. 	%/:0 1:2 	%3:4 5:6 7:8 	%9:: ;:< 	%=:> ?:@ A:B 	%C:D E:F 	%G:H I:J 	%K:L M:N 	%O:P Q:R 	%S:T U:V W:X Y:Z 	%[:\ ]:^ _:` a:b c:d 	%e:f g:h 
		
	
s:v  ^\ JP
P
%P
 	%P
 	P

 P
 P
 	%P
 P
 P
 	%P
 P
 P
 	%P
 
5P
 
5P
  
5!P
" 
5#P
$ %P
& 	%'P
( )P
* 	%+P
, -P
. 	%/P
0 1P
2 	%3P
4 	%5P
6 7P
8 9P
: 	%;P
< 	%=P
> ?P
@ 	%AP
B 	%CP
D EP
F 	%GP
H IP
J 	%KP
L MP
N OP
P 	%QP
R SP
T 	%UP
V WP
X YP
Z 	%[P
\ ]P
^ 	%_P
` aP
b cP
d eP
f gP
h iP
j kP
l mP
n 	%oP
p 	%qP
r sP
t uP
v 	%wP
x 	%yP
z 
5{P
| }P
~ 	&P
@ AP
B CP
D EP
F GP
H IP
J 
				 

_P
d	 %e 
  h
 K@K@K@ @ J	@
 @ J@ @ J@ K@ K@ @ 	%@ @ 	%@ @  	%!@" #@$ 	%%@& K'@( 	%)@* 
5+@, -@. 	%/@0 Iu1@2 K3@4 Ke5@6 K7@8 K#u9@: K;@< =@> 	%?@@ A@B 	%C@D E@F G@H 	%I@J K@L 	%M@N O@P Q@R S@T U@V W@X 	%Y@Z [@\ J]@^ K_@` a@b c@d e@f #f+ug@h 

										@D  fd ; z4eU 34 5CUUCeC eC e	C
 eC eC eC UUC eC eC eC eC eC eC eC  e!C" e#C$ e%C& e'C( e)C* e+C, e-C. e/C0 e1C2 UU3C4 UU5C6 UU7C8 UU9C: e;C< UU=C> UU?C@ UUACB UUCCD eECF eGCH eICJ eKCL eMCN eOCP UUQCR eSCT eUCV eWCX eYCZ e[C\ e]C^ e_C` eaCb ecCd eeCf egCh eeeeeUUUUUUeTEUUUUUUECJ j)X 6(T zHHTV r   