မဝ်ဂျူ:fa-ira-translit
မံက်ပြာကတ်
Documentation for this module may be created at မဝ်ဂျူ:fa-ira-translit/doc
local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local U = m_str_utils.char
local fatHatan = U(0x64B)
local zabar = U(0x64E)
local zer = U(0x650)
local pesh = U(0x64F)
local tashdid = U(0x651) -- also called shadda
local jazm = "ْ"
local he = "ه"
local zwnj = U(0x200C)
local highhmz = U(0x654)
local alef_wasla = "ٱ"
local balticons = "ڃڇڑڗݜݨݩǩ"
local consonants = "ءبپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنؤهئ"
local consonants2 = "ءبپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنوؤهیئyw" .. balticons -- including semivowels
local ain = "ع"
local alif = "ا"
local ye = "ی"
local ye2 = "ئ"
local ye3 = "ے" -- for balti
local vao = "و"
local function clscheck(text, lang, sc)
return require("Module:fa-cls-translit").tr(text, lang, sc)
end
-- this has the fa-cls-translit perform the diactic check and other basic functions
function export.tr(text, lang, sc)
text = gsub(text, alif .. fatHatan, fatHatan)
text = gsub(text, "([" .. consonants2 .. "])" .. alif, "%1" .. zabar .. alif)
text = gsub(text, pesh .. vao .. "([" .. consonants .. jazm .. "])", zabar .. vao .. "%1")
text = gsub(text, zer .. ye .. "([" .. consonants .. jazm .. "])", zabar .. ye .. "%1")
-- alows an alif without a zabar to work
text = clscheck(text, lang, sc)
if text == nil then --prevent module from breaking if diacritic check fails
return nil
end
text = gsub(text, "e" .. " ", "e-ye")
text = gsub(text, "iy", "ēy")
text = gsub(text, "y%-i", "ē-yi")
text = gsub(text, "q", "ğ")
text = gsub(text, "ww", "vv")
text = gsub(text, "i", "e")
text = gsub(text, "u", "o")
text = gsub(text, "ē", "i")
text = gsub(text, "ay([^yaâeoiu])", "ī%1")
text = gsub(text, "ī", "ey")
text = gsub(text, "ō", "u")
text = gsub(text, "ā", "â")
text = gsub(text, "w([aâeoiu])", "v%1")
text = gsub(text, "aw", "ū")
text = gsub(text, "w", "v")
text = gsub(text, "ū", "ow")
return text
end
return export