module Data.Char.Devanagari.TokenTables
  ( harvardKyotoTable,
    iastTable,
    isoTable,
    devanagariIndependentTable,
    devanagariDependentTable,
    inputVirams,
    virams,
    viramsHarvard,
    viramsDeva,
  )
where

{-
  This module contains Token tables for the Devanagari script and its roman transliterations Harvard-Kyoto, IAST and ISO15919.
  These tables are used to generate token ReadMaps for the Tokenizers as well as TranslateMaps for the Generators.
-}

import           Data.Char.Devanagari.DevanagariTokens
import           Data.Text                       (Text, pack)

harvardKyotoTable :: [(Text, DevanagariToken)]
harvardKyotoTable :: [(Text, DevanagariToken)]
harvardKyotoTable =
  [ (Text
"lRR", Vowel -> DevanagariToken
Vow Vowel
LII),
    (Text
"RR", Vowel -> DevanagariToken
Vow Vowel
RII),
    (Text
"lR", Vowel -> DevanagariToken
Vow Vowel
LI),
    (Text
"OM", DevanagariToken
OM),
    (Text
"kh", Consonant -> DevanagariToken
Cons Consonant
KH),
    (Text
"gh", Consonant -> DevanagariToken
Cons Consonant
GH),
    (Text
"ch", Consonant -> DevanagariToken
Cons Consonant
CH),
    (Text
"jh", Consonant -> DevanagariToken
Cons Consonant
JH),
    (Text
"Th", Consonant -> DevanagariToken
Cons Consonant
TdotH),
    (Text
"Dh", Consonant -> DevanagariToken
Cons Consonant
DdotH),
    (Text
"th", Consonant -> DevanagariToken
Cons Consonant
TH),
    (Text
"dh", Consonant -> DevanagariToken
Cons Consonant
DH),
    (Text
"ph", Consonant -> DevanagariToken
Cons Consonant
PH),
    (Text
"bh", Consonant -> DevanagariToken
Cons Consonant
BH),
    (Text
"k", Consonant -> DevanagariToken
Cons Consonant
K),
    (Text
"g", Consonant -> DevanagariToken
Cons Consonant
G),
    (Text
"G", Consonant -> DevanagariToken
Cons Consonant
Ntop),
    (Text
"c", Consonant -> DevanagariToken
Cons Consonant
C),
    (Text
"j", Consonant -> DevanagariToken
Cons Consonant
J),
    (Text
"J", Consonant -> DevanagariToken
Cons Consonant
Ntild),
    (Text
"T", Consonant -> DevanagariToken
Cons Consonant
Tdot),
    (Text
"D", Consonant -> DevanagariToken
Cons Consonant
Ddot),
    (Text
"N", Consonant -> DevanagariToken
Cons Consonant
Ndot),
    (Text
"t", Consonant -> DevanagariToken
Cons Consonant
T),
    (Text
"d", Consonant -> DevanagariToken
Cons Consonant
D),
    (Text
"n", Consonant -> DevanagariToken
Cons Consonant
N),
    (Text
"p", Consonant -> DevanagariToken
Cons Consonant
P),
    (Text
"b", Consonant -> DevanagariToken
Cons Consonant
B),
    (Text
"m", Consonant -> DevanagariToken
Cons Consonant
M),
    (Text
"y", Consonant -> DevanagariToken
Cons Consonant
Y),
    (Text
"r", Consonant -> DevanagariToken
Cons Consonant
R),
    (Text
"l", Consonant -> DevanagariToken
Cons Consonant
L),
    (Text
"v", Consonant -> DevanagariToken
Cons Consonant
V),
    (Text
"z", Consonant -> DevanagariToken
Cons Consonant
Stop),
    (Text
"Z", Consonant -> DevanagariToken
Cons Consonant
Z),
    (Text
"S", Consonant -> DevanagariToken
Cons Consonant
Sdot),
    (Text
"s", Consonant -> DevanagariToken
Cons Consonant
S),
    (Text
"h", Consonant -> DevanagariToken
Cons Consonant
H),
    (Text
"ai", Vowel -> DevanagariToken
Vow Vowel
AI),
    (Text
"au", Vowel -> DevanagariToken
Vow Vowel
AU),
    (Text
"ġ", Consonant -> DevanagariToken
Cons Consonant
Gtop), -- this is not part of the original HarvardKyoto definition. I added it to allow full compatibility between all transliterations.
    (Text
"f", Consonant -> DevanagariToken
Cons Consonant
F),
    (Text
"a", Vowel -> DevanagariToken
Vow Vowel
A),
    (Text
"A", Vowel -> DevanagariToken
Vow Vowel
AA),
    (Text
"i", Vowel -> DevanagariToken
Vow Vowel
I),
    (Text
"I", Vowel -> DevanagariToken
Vow Vowel
II),
    (Text
"u", Vowel -> DevanagariToken
Vow Vowel
U),
    (Text
"U", Vowel -> DevanagariToken
Vow Vowel
UU),
    (Text
"e", Vowel -> DevanagariToken
Vow Vowel
E),
    (Text
"o", Vowel -> DevanagariToken
Vow Vowel
O),
    (Text
"R", Vowel -> DevanagariToken
Vow Vowel
RI),
    (Text
"M", DevanagariToken
Anusvara),
    (Text
"MM", DevanagariToken
Anunasika), -- this is not part of the original HarvardKyoto definition. I added it to allow full compatibility between all transliterations.
    (Text
"H", DevanagariToken
Visarga),
    (Text
"", DevanagariToken
Virama),
    (Text
"'", DevanagariToken
Avagraha),
    (Text
"0", Digit -> DevanagariToken
Dig Digit
ZERO),
    (Text
"1", Digit -> DevanagariToken
Dig Digit
ONE),
    (Text
"2", Digit -> DevanagariToken
Dig Digit
TWO),
    (Text
"3", Digit -> DevanagariToken
Dig Digit
THREE),
    (Text
"4", Digit -> DevanagariToken
Dig Digit
FOUR),
    (Text
"5", Digit -> DevanagariToken
Dig Digit
FIVE),
    (Text
"6", Digit -> DevanagariToken
Dig Digit
SIX),
    (Text
"7", Digit -> DevanagariToken
Dig Digit
SEVEN),
    (Text
"8", Digit -> DevanagariToken
Dig Digit
EIGHT),
    (Text
"9", Digit -> DevanagariToken
Dig Digit
NINE)
  ]

iastTable :: [(Text, DevanagariToken)]
iastTable :: [(Text, DevanagariToken)]
iastTable =
  [ (Text
"kh", Consonant -> DevanagariToken
Cons Consonant
KH),
    (Text
"gh", Consonant -> DevanagariToken
Cons Consonant
GH),
    (Text
"ch", Consonant -> DevanagariToken
Cons Consonant
CH),
    (Text
"jh", Consonant -> DevanagariToken
Cons Consonant
JH),
    (Text
"ṭh", Consonant -> DevanagariToken
Cons Consonant
TdotH),
    (Text
"ḍh", Consonant -> DevanagariToken
Cons Consonant
DdotH),
    (Text
"th", Consonant -> DevanagariToken
Cons Consonant
TH),
    (Text
"dh", Consonant -> DevanagariToken
Cons Consonant
DH),
    (Text
"ph", Consonant -> DevanagariToken
Cons Consonant
PH),
    (Text
"bh", Consonant -> DevanagariToken
Cons Consonant
BH),
    (Text
"oṃ", DevanagariToken
OM),
    (Text
"k", Consonant -> DevanagariToken
Cons Consonant
K),
    (Text
"g", Consonant -> DevanagariToken
Cons Consonant
G),
    (Text
"ṅ", Consonant -> DevanagariToken
Cons Consonant
Ntop),
    (Text
"c", Consonant -> DevanagariToken
Cons Consonant
C),
    (Text
"j", Consonant -> DevanagariToken
Cons Consonant
J),
    (Text
"ñ", Consonant -> DevanagariToken
Cons Consonant
Ntild),
    (Text
"ṭ", Consonant -> DevanagariToken
Cons Consonant
Tdot),
    (Text
"ḍ", Consonant -> DevanagariToken
Cons Consonant
Ddot),
    (Text
"ṇ", Consonant -> DevanagariToken
Cons Consonant
Ndot),
    (Text
"t", Consonant -> DevanagariToken
Cons Consonant
T),
    (Text
"d", Consonant -> DevanagariToken
Cons Consonant
D),
    (Text
"n", Consonant -> DevanagariToken
Cons Consonant
N),
    (Text
"p", Consonant -> DevanagariToken
Cons Consonant
P),
    (Text
"b", Consonant -> DevanagariToken
Cons Consonant
B),
    (Text
"m", Consonant -> DevanagariToken
Cons Consonant
M),
    (Text
"y", Consonant -> DevanagariToken
Cons Consonant
Y),
    (Text
"r", Consonant -> DevanagariToken
Cons Consonant
R),
    (Text
"l", Consonant -> DevanagariToken
Cons Consonant
L),
    (Text
"v", Consonant -> DevanagariToken
Cons Consonant
V),
    (Text
"ś", Consonant -> DevanagariToken
Cons Consonant
Stop),
    (Text
"ṣ", Consonant -> DevanagariToken
Cons Consonant
Sdot),
    (Text
"s", Consonant -> DevanagariToken
Cons Consonant
S),
    (Text
"z", Consonant -> DevanagariToken
Cons Consonant
Z),
    (Text
"h", Consonant -> DevanagariToken
Cons Consonant
H),
    (Text
"ai", Vowel -> DevanagariToken
Vow Vowel
AI),
    (Text
"au", Vowel -> DevanagariToken
Vow Vowel
AU),
    (Text
"ġ", Consonant -> DevanagariToken
Cons Consonant
Gtop),
    (Text
"f", Consonant -> DevanagariToken
Cons Consonant
F),
    (Text
"a", Vowel -> DevanagariToken
Vow Vowel
A),
    (Text
"ā", Vowel -> DevanagariToken
Vow Vowel
AA),
    (Text
"i", Vowel -> DevanagariToken
Vow Vowel
I),
    (Text
"ī", Vowel -> DevanagariToken
Vow Vowel
II),
    (Text
"u", Vowel -> DevanagariToken
Vow Vowel
U),
    (Text
"ū", Vowel -> DevanagariToken
Vow Vowel
UU),
    (Text
"e", Vowel -> DevanagariToken
Vow Vowel
E),
    (Text
"o", Vowel -> DevanagariToken
Vow Vowel
O),
    (Text
"ṛ", Vowel -> DevanagariToken
Vow Vowel
RI),
    (Text
"ṝ", Vowel -> DevanagariToken
Vow Vowel
RII),
    (Text
"ḷ", Vowel -> DevanagariToken
Vow Vowel
LI),
    (Text
"ḹ", Vowel -> DevanagariToken
Vow Vowel
LII),
    (Text
"ṃ", DevanagariToken
Anusvara),
    (Text
"m̐", DevanagariToken
Anunasika),
    (Text
"ḥ", DevanagariToken
Visarga),
    (Text
"'", DevanagariToken
Avagraha),
    (Text
"", DevanagariToken
Virama),
    (Text
"0", Digit -> DevanagariToken
Dig Digit
ZERO),
    (Text
"1", Digit -> DevanagariToken
Dig Digit
ONE),
    (Text
"2", Digit -> DevanagariToken
Dig Digit
TWO),
    (Text
"3", Digit -> DevanagariToken
Dig Digit
THREE),
    (Text
"4", Digit -> DevanagariToken
Dig Digit
FOUR),
    (Text
"5", Digit -> DevanagariToken
Dig Digit
FIVE),
    (Text
"6", Digit -> DevanagariToken
Dig Digit
SIX),
    (Text
"7", Digit -> DevanagariToken
Dig Digit
SEVEN),
    (Text
"8", Digit -> DevanagariToken
Dig Digit
EIGHT),
    (Text
"9", Digit -> DevanagariToken
Dig Digit
NINE)
  ]

isoTable :: [(Text, DevanagariToken)]
isoTable :: [(Text, DevanagariToken)]
isoTable =
  [ (Text
"kh", Consonant -> DevanagariToken
Cons Consonant
KH),
    (Text
"gh", Consonant -> DevanagariToken
Cons Consonant
GH),
    (Text
"ch", Consonant -> DevanagariToken
Cons Consonant
CH),
    (Text
"jh", Consonant -> DevanagariToken
Cons Consonant
JH),
    (Text
"ṭh", Consonant -> DevanagariToken
Cons Consonant
TdotH),
    (Text
"ḍh", Consonant -> DevanagariToken
Cons Consonant
DdotH),
    (Text
"th", Consonant -> DevanagariToken
Cons Consonant
TH),
    (Text
"dh", Consonant -> DevanagariToken
Cons Consonant
DH),
    (Text
"ph", Consonant -> DevanagariToken
Cons Consonant
PH),
    (Text
"bh", Consonant -> DevanagariToken
Cons Consonant
BH),
    (Text
"ōṁ", DevanagariToken
OM),
    (Text
"k", Consonant -> DevanagariToken
Cons Consonant
K),
    (Text
"g", Consonant -> DevanagariToken
Cons Consonant
G),
    (Text
"ṅ", Consonant -> DevanagariToken
Cons Consonant
Ntop),
    (Text
"c", Consonant -> DevanagariToken
Cons Consonant
C),
    (Text
"j", Consonant -> DevanagariToken
Cons Consonant
J),
    (Text
"ñ", Consonant -> DevanagariToken
Cons Consonant
Ntild),
    (Text
"ṭ", Consonant -> DevanagariToken
Cons Consonant
Tdot),
    (Text
"ḍ", Consonant -> DevanagariToken
Cons Consonant
Ddot),
    (Text
"ṇ", Consonant -> DevanagariToken
Cons Consonant
Ndot),
    (Text
"t", Consonant -> DevanagariToken
Cons Consonant
T),
    (Text
"d", Consonant -> DevanagariToken
Cons Consonant
D),
    (Text
"n", Consonant -> DevanagariToken
Cons Consonant
N),
    (Text
"p", Consonant -> DevanagariToken
Cons Consonant
P),
    (Text
"b", Consonant -> DevanagariToken
Cons Consonant
B),
    (Text
"m", Consonant -> DevanagariToken
Cons Consonant
M),
    (Text
"y", Consonant -> DevanagariToken
Cons Consonant
Y),
    (Text
"r", Consonant -> DevanagariToken
Cons Consonant
R),
    (Text
"l", Consonant -> DevanagariToken
Cons Consonant
L),
    (Text
"v", Consonant -> DevanagariToken
Cons Consonant
V),
    (Text
"ś", Consonant -> DevanagariToken
Cons Consonant
Stop),
    (Text
"ṣ", Consonant -> DevanagariToken
Cons Consonant
Sdot),
    (Text
"s", Consonant -> DevanagariToken
Cons Consonant
S),
    (Text
"z", Consonant -> DevanagariToken
Cons Consonant
Z),
    (Text
"h", Consonant -> DevanagariToken
Cons Consonant
H),
    (Text
"ai", Vowel -> DevanagariToken
Vow Vowel
AI),
    (Text
"au", Vowel -> DevanagariToken
Vow Vowel
AU),
    (Text
"ġ", Consonant -> DevanagariToken
Cons Consonant
Gtop),
    (Text
"f", Consonant -> DevanagariToken
Cons Consonant
F),
    (Text
"a", Vowel -> DevanagariToken
Vow Vowel
A),
    (Text
"ā", Vowel -> DevanagariToken
Vow Vowel
AA),
    (Text
"i", Vowel -> DevanagariToken
Vow Vowel
I),
    (Text
"ī", Vowel -> DevanagariToken
Vow Vowel
II),
    (Text
"u", Vowel -> DevanagariToken
Vow Vowel
U),
    (Text
"ū", Vowel -> DevanagariToken
Vow Vowel
UU),
    (Text
"ē", Vowel -> DevanagariToken
Vow Vowel
E),
    (Text
"ō", Vowel -> DevanagariToken
Vow Vowel
O),
    (Text
"r̥", Vowel -> DevanagariToken
Vow Vowel
RI),
    (Text
"r̥̄", Vowel -> DevanagariToken
Vow Vowel
RII),
    (Text
"l̥", Vowel -> DevanagariToken
Vow Vowel
LI),
    (Text
"l̥̄", Vowel -> DevanagariToken
Vow Vowel
LII),
    (Text
"ṁ", DevanagariToken
Anusvara),
    (Text
"m̐", DevanagariToken
Anunasika),
    (Text
"ḥ", DevanagariToken
Visarga),
    (Text
"'", DevanagariToken
Avagraha),
    (Text
"", DevanagariToken
Virama),
    (Text
"0", Digit -> DevanagariToken
Dig Digit
ZERO),
    (Text
"1", Digit -> DevanagariToken
Dig Digit
ONE),
    (Text
"2", Digit -> DevanagariToken
Dig Digit
TWO),
    (Text
"3", Digit -> DevanagariToken
Dig Digit
THREE),
    (Text
"4", Digit -> DevanagariToken
Dig Digit
FOUR),
    (Text
"5", Digit -> DevanagariToken
Dig Digit
FIVE),
    (Text
"6", Digit -> DevanagariToken
Dig Digit
SIX),
    (Text
"7", Digit -> DevanagariToken
Dig Digit
SEVEN),
    (Text
"8", Digit -> DevanagariToken
Dig Digit
EIGHT),
    (Text
"9", Digit -> DevanagariToken
Dig Digit
NINE)
  ]

devanagariIndependentTable :: [(Text, DevanagariToken)]
devanagariIndependentTable :: [(Text, DevanagariToken)]
devanagariIndependentTable =
  [ (Text
"ख", Consonant -> DevanagariToken
Cons Consonant
KH),
    (Text
"घ", Consonant -> DevanagariToken
Cons Consonant
GH),
    (Text
"छ", Consonant -> DevanagariToken
Cons Consonant
CH),
    (Text
"झ", Consonant -> DevanagariToken
Cons Consonant
JH),
    (Text
"ठ", Consonant -> DevanagariToken
Cons Consonant
TdotH),
    (Text
"ढ", Consonant -> DevanagariToken
Cons Consonant
DdotH),
    (Text
"थ", Consonant -> DevanagariToken
Cons Consonant
TH),
    (Text
"ध", Consonant -> DevanagariToken
Cons Consonant
DH),
    (Text
"फ", Consonant -> DevanagariToken
Cons Consonant
PH),
    (Text
"भ", Consonant -> DevanagariToken
Cons Consonant
BH),
    (Text
"ॐ", DevanagariToken
OM),
    (Text
"क", Consonant -> DevanagariToken
Cons Consonant
K),
    (Text
"ग", Consonant -> DevanagariToken
Cons Consonant
G),
    (Text
"ग़", Consonant -> DevanagariToken
Cons Consonant
Gtop),
    (Text
"ङ", Consonant -> DevanagariToken
Cons Consonant
Ntop),
    (Text
"च", Consonant -> DevanagariToken
Cons Consonant
C),
    (Text
"ज", Consonant -> DevanagariToken
Cons Consonant
J),
    (Text
"ञ", Consonant -> DevanagariToken
Cons Consonant
Ntild),
    (Text
"ट", Consonant -> DevanagariToken
Cons Consonant
Tdot),
    (Text
"ड", Consonant -> DevanagariToken
Cons Consonant
Ddot),
    (Text
"ण", Consonant -> DevanagariToken
Cons Consonant
Ndot),
    (Text
"त", Consonant -> DevanagariToken
Cons Consonant
T),
    (Text
"द", Consonant -> DevanagariToken
Cons Consonant
D),
    (Text
"न", Consonant -> DevanagariToken
Cons Consonant
N),
    (Text
"प", Consonant -> DevanagariToken
Cons Consonant
P),
    (Text
"ब", Consonant -> DevanagariToken
Cons Consonant
B),
    (Text
"म", Consonant -> DevanagariToken
Cons Consonant
M),
    (Text
"य", Consonant -> DevanagariToken
Cons Consonant
Y),
    (Text
"र", Consonant -> DevanagariToken
Cons Consonant
R),
    (Text
"ल", Consonant -> DevanagariToken
Cons Consonant
L),
    (Text
"व", Consonant -> DevanagariToken
Cons Consonant
V),
    (Text
"श", Consonant -> DevanagariToken
Cons Consonant
Stop),
    (Text
"ष", Consonant -> DevanagariToken
Cons Consonant
Sdot),
    (Text
"स", Consonant -> DevanagariToken
Cons Consonant
S),
    (Text
"ह", Consonant -> DevanagariToken
Cons Consonant
H),
    (Text
"ग", Consonant -> DevanagariToken
Cons Consonant
G),
    (Text
"ज़", Consonant -> DevanagariToken
Cons Consonant
Z),
    (Text
"फ़", Consonant -> DevanagariToken
Cons Consonant
F),
    (Text
"अ", Vowel -> DevanagariToken
Vow Vowel
A),
    (Text
"आ", Vowel -> DevanagariToken
Vow Vowel
AA),
    (Text
"इ", Vowel -> DevanagariToken
Vow Vowel
I),
    (Text
"ई", Vowel -> DevanagariToken
Vow Vowel
II),
    (Text
"उ", Vowel -> DevanagariToken
Vow Vowel
U),
    (Text
"ऊ", Vowel -> DevanagariToken
Vow Vowel
UU),
    (Text
"ए", Vowel -> DevanagariToken
Vow Vowel
E),
    (Text
"ओ", Vowel -> DevanagariToken
Vow Vowel
O),
    (Text
"ऋ", Vowel -> DevanagariToken
Vow Vowel
RI),
    (Text
"ॠ", Vowel -> DevanagariToken
Vow Vowel
RII),
    (Text
"ऌ", Vowel -> DevanagariToken
Vow Vowel
LI),
    (Text
"ॡ", Vowel -> DevanagariToken
Vow Vowel
LII),
    (Text
"ऐ", Vowel -> DevanagariToken
Vow Vowel
AI),
    (Text
"औ", Vowel -> DevanagariToken
Vow Vowel
AU),
    (Text
"्", DevanagariToken
Virama),
    (Text
"ं", DevanagariToken
Anusvara),
    (Text
"ँ", DevanagariToken
Anunasika),
    (Text
"ः", DevanagariToken
Visarga),
    (Text
"ऽ", DevanagariToken
Avagraha),
    (Text
"०", Digit -> DevanagariToken
Dig Digit
ZERO),
    (Text
"१", Digit -> DevanagariToken
Dig Digit
ONE),
    (Text
"२", Digit -> DevanagariToken
Dig Digit
TWO),
    (Text
"३", Digit -> DevanagariToken
Dig Digit
THREE),
    (Text
"४", Digit -> DevanagariToken
Dig Digit
FOUR),
    (Text
"५", Digit -> DevanagariToken
Dig Digit
FIVE),
    (Text
"६", Digit -> DevanagariToken
Dig Digit
SIX),
    (Text
"७", Digit -> DevanagariToken
Dig Digit
SEVEN),
    (Text
"८", Digit -> DevanagariToken
Dig Digit
EIGHT),
    (Text
"९", Digit -> DevanagariToken
Dig Digit
NINE)
  ]

devanagariDependentTable :: [(Text, DevanagariToken)]
devanagariDependentTable :: [(Text, DevanagariToken)]
devanagariDependentTable =
  [ (Text
"ं", DevanagariToken
Anusvara),
    (Text
"ँ", DevanagariToken
Anunasika),
    (Text
"ः", DevanagariToken
Visarga),
    (Text
"ऽ", DevanagariToken
Avagraha),
    (Text
"ा", Vowel -> DevanagariToken
Vow Vowel
AA),
    (Text
"ि", Vowel -> DevanagariToken
Vow Vowel
I),
    (Text
"ी", Vowel -> DevanagariToken
Vow Vowel
II),
    (Text
"ु", Vowel -> DevanagariToken
Vow Vowel
U),
    (Text
"ू", Vowel -> DevanagariToken
Vow Vowel
UU),
    (Text
"ृ", Vowel -> DevanagariToken
Vow Vowel
RI),
    (Text
"ॄ", Vowel -> DevanagariToken
Vow Vowel
RII),
    (Text
"ॢ", Vowel -> DevanagariToken
Vow Vowel
LI),
    (Text
"ॣ", Vowel -> DevanagariToken
Vow Vowel
LII),
    (Text
"े", Vowel -> DevanagariToken
Vow Vowel
E),
    (Text
"ै", Vowel -> DevanagariToken
Vow Vowel
AI),
    (Text
"ो", Vowel -> DevanagariToken
Vow Vowel
O),
    (Text
"ौ", Vowel -> DevanagariToken
Vow Vowel
AU)
  ]

-- The handling for virams is not symmetric for input and output.
-- This is meant as an optimization to ease manual input by using |, ||,
-- _ representing the ZWNJ (zero width non joiner)
-- \ representing the ZWJ (zero width joiner)
inputVirams :: [(Text, DevanagariToken)]
inputVirams :: [(Text, DevanagariToken)]
inputVirams =
  [ (Text
"|", DevanagariToken
PurnaViram),
    (Text
"||", DevanagariToken
DeerghViram),
    (Text
"।", DevanagariToken
PurnaViram),
    (Text
"॥", DevanagariToken
DeerghViram),
    (Text
"_", DevanagariToken
ZWNJ),
    (Text
"\\", DevanagariToken
ZWJ),
    (String -> Text
pack [Char
'\8204'], DevanagariToken
ZWNJ),
    (String -> Text
pack [Char
'\8205'], DevanagariToken
ZWJ)
  ]

virams :: [(Text, DevanagariToken)]
virams :: [(Text, DevanagariToken)]
virams =
  [ (Text
"।", DevanagariToken
PurnaViram),
    (Text
"॥", DevanagariToken
DeerghViram),
    (Text
"_", DevanagariToken
ZWNJ),
    (Text
"\\", DevanagariToken
ZWJ)
  ]

viramsHarvard :: [(Text, DevanagariToken)]
viramsHarvard :: [(Text, DevanagariToken)]
viramsHarvard =
  [ (Text
"|", DevanagariToken
PurnaViram),
    (Text
"||", DevanagariToken
DeerghViram),
    (Text
"_", DevanagariToken
ZWNJ),
    (Text
"\\", DevanagariToken
ZWJ)
  ]

-- Devanagari needs special unicode characters for ZWNJ and ZWJ
viramsDeva :: [(Text, DevanagariToken)]
viramsDeva :: [(Text, DevanagariToken)]
viramsDeva =
  [ (Text
"।", DevanagariToken
PurnaViram),
    (Text
"॥", DevanagariToken
DeerghViram),
    (String -> Text
pack [Char
'\8204'], DevanagariToken
ZWNJ),
    (String -> Text
pack [Char
'\8205'], DevanagariToken
ZWJ)
  ]