local export = {}
local consonant_list = "kKgGNcCjJYwWqQRtTdDnpPbBmyrlLvSzsh"
local consonant = ""
local vowel_list = "aAiIuUfFxXeEoO"
local vowel = ""
local U = require("Module:string/char")
local virAma = U(0x94D)
local diacritics = {
= '', = 'ा',
= 'ि', = 'ी',
= 'ु', = 'ू',
= 'ृ', = 'ॄ',
= 'ॢ', = 'ॣ',
= 'े', = 'ै',
= 'ो', = 'ौ',
}
local tt = {
-- consonants
= 'क', = 'ख', = 'ग', = 'घ', = 'ङ',
= 'च', = 'छ', = 'ज', = 'झ', = 'ञ',
= 'ट', = 'ठ', = 'ड', = 'ढ', = 'ण',
= 'त', = 'थ', = 'द', = 'ध', = 'न',
= 'प', = 'फ', = 'ब', = 'भ', = 'म',
= 'य', = 'र', = 'ल', = 'व', = 'ळ',
= 'श', = 'ष', = 'स', = 'ह',
-- vowels
= "अ", = "आ",
= "इ", = "ई",
= "उ", = "ऊ",
= "ऋ", = "ॠ",
= "ऌ", = "ॡ",
= "ए", = "ऐ",
= "ओ", = "औ",
-- chandrabindu
= 'ँ',
-- anusvara
= 'ं',
-- visarga
= 'ः',
-- avagraha
= 'ऽ',
--numerals
= '०', = '१', = '२', = '३', = '४', = '५', = '६', = '७', = '८', = '९',
--Vedic extensions
= 'ᳵ',
= 'ᳶ',
= '',
= '',
}
function export.tr(text, lang, sc)
-- capture twice so that all adjacent pairs are covered
text = mw.ustring.gsub(text, "(" .. consonant .. ")" .. "(" .. consonant .. ")", "%1" .. virAma .. "%2")
text = mw.ustring.gsub(text, "(" .. consonant .. ")" .. "(" .. consonant .. ")", "%1" .. virAma .. "%2")
-- whitespace and end of string
text = mw.ustring.gsub(text, "(" .. consonant .. ")%f", "%1" .. virAma)
-- all vowel diacritics
text = mw.ustring.gsub(text, "(" .. consonant .. ")(" .. vowel .. ")", function(c, v) return c .. diacritics end)
-- everything else
text = mw.ustring.gsub(text, '.', tt)
return mw.ustring.toNFC(text)
end
return export