Mazmuna geçiň

Module:ar-stripdiacritics

Wikisözlük saýtyndan

Bu modul üçin resminamalar Module:ar-stripdiacritics/doc sahypasynda döredilip bilner

local m_str_utils = require("Module:string utilities")

local find = m_str_utils.find
local gsub = m_str_utils.gsub
local U = m_str_utils.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, 0x656, 0x670, 0x6DF, 0x6E0, 0x6E1)

-- replace alif waṣl with alif
-- remove tatweel and diacritics: fathatan, dammatan, kasratan, fatha,
-- damma, kasra, shadda, sukun, subscript alif, superscript (dagger) alif,
-- sifr mustadir, sifr mustatil, variant sukun
local replacements = {
	from = {U(0x0671), "[" .. U(0x640) .. Arabic_diacritics .. "]"},
	to   = {U(0x0627)},
}

local export = {}

function export.stripDiacritics(text, lang, sc)
	if text == waSla or find(text, "^" .. taTwiil .. "?[" .. Arabic_diacritics .. "]" .. "$") then
		return text
	end
	
	for i, from in ipairs(replacements.from) do
		local to = replacements.to[i] or ""
		text = gsub(text, from, to)
	end
	
	return text
end

return export