Module:sa-utilities/translit/IAST-to-SLP1

local export = {}

local U = require("Module:string/char")

local acute = U(0x301) -- combining acute local grave = U(0x300) -- combining grave

local composed_accents = { ['á'] = 'a/', ['à'] = 'a\\', ['í'] = 'i/', ['ì'] = 'i\\', ['ú'] = 'u/', ['ù'] = 'u\\', ['é'] = 'e/', ['è'] = 'e\\', ['ó'] = 'o/', ['ò'] = 'o\\', [acute] = '/', [grave] = '\\', }

local normalize_accents = { ['á'] = '/', ['à'] = '\\', }

local function change_accent(text) -- normalize accent placement text = mw.ustring.gsub(text, '([áà])([iu])', function(a, iu) return "a" .. iu .. normalize_accents[a] end) text = mw.ustring.gsub(text, '.', composed_accents) return text end

local function detect_lateral_flap(text) -- convert jihvamuliya first text = mw.ustring.gsub(text, "x", "Z") -- an "ḷ" initially before a non-vowel or between two non-vowels vowel is assumed to be "x" text = mw.ustring.gsub(text, "^ḷ([^aāiīuūeoṛṝḷḹ])", "x%1") text = mw.ustring.gsub(text, "([^aāiīuūeoṛṝḷḹ/\\])ḷ([^aāiīuūeoṛṝḷḹ])", "%1x%2") -- all others are assumed to be "L" text = mw.ustring.gsub(text, "ḷ", "L") return text end

local tt = { [1] = {		--consonants ["kh"] = "K", ["gh"] = "G", ["ch"] = "C", ["jh"] = "J", ["ṭh"] = "W", ["ḍh"] = "Q", ["th"] = "T", ["dh"] = "D", ["ph"] = "P", ["bh"] = "B", },	[2] = {		-- vowels ["ai"] = "E", ["au"] = "O", },	[3] = {		-- chandrabindu ['m̐'] = '~' },	[4] = {		--consonants ["ṅ"] = "N", ["ñ"] = "Y", ["ṭ"] = "w", ["ḍ"] = "q", ["ṇ"] = "R", ["ś"] = "S", ["ṣ"] = "z",				-- ["ḷ"] = "L" --vowels ["ā"] = "A", ["ī"] = "I", ["ū"] = "U", ["ṛ"] = "f", ["ṝ"] = "F", ["ḹ"] = "X",								-- ["ḷ"] = "x", -- avagraha ["’"] = "",		--other ["ṃ"] = "M", ["ḥ"] = "H",								--	["x"] = "Z" ["f"] = "V", }, }

function export.tr(text, lang, sc) text = mw.ustring.toNFC(text) text = change_accent(text) text = detect_lateral_flap(text) text = mw.ustring.gsub(text, '[kgcjṭḍtdpb]h', tt[1]) text = mw.ustring.gsub(text, 'a[iu]', tt[2]) text = mw.ustring.gsub(text, 'm̐', tt[3]) text = mw.ustring.gsub(text, '.', tt[4]) return text end

return export