বিষয়বস্তুতে চলুন

মডিউল:fa-ira-translit

উইকিঅভিধান, মুক্ত অভিধান থেকে

এই মডিউলের জন্য মডিউল:fa-ira-translit/নথি-এ নথিপত্র তৈরি করা হয়ে থাকতে পারে

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