Module:Ar-entryname

From The Languages of David J. Peterson
Jump to navigation Jump to search

Script error: No such module "documentation/entry name".


local export = {}

function export.makeEntryName(text, lang, sc)
	local U = mw.ustring.char
	local taTwiil = U(0x640)
	local waSla = U(0x671)
	-- diacritics ordinarily removed by entry_name replacements
	local Arabic_diacritics = U(0x64B, 0x64C, 0x64D, 0x64E, 0x64F, 0x650, 0x651, 0x652, 0x670)
	
	if text == waSla or mw.ustring.find(text, "^" .. taTwiil .. "?[" .. Arabic_diacritics .. "]" .. "$") then
		return text
	end
	
	-- replace alif waṣl with alif
	-- remove tatweel and diacritics: fathatan, dammatan, kasratan, fatha,
	-- damma, kasra, shadda, sukun, superscript (dagger) alef
	local replacements = {
		from = {U(0x0671), "[" .. U(0x0640, 0x064B) .. "-" .. U(0x0652, 0x0670, 0x0656) .. "]"},
		to   = {U(0x0627)}
	}
	
	for i, from in ipairs(replacements.from) do
		local to = replacements.to[i] or ""
		text = mw.ustring.gsub(text, from, to)
	end
	
	return text
end

return export