มอดูล:Cyrs-sortkey

จาก วิกิพจนานุกรม พจนานุกรมเสรี
local export = {}
local u = mw.ustring.char
local a, b, c, d, e, f, g, h, i = u(0xF000), u(0xF001), u(0xF002), u(0xF003), u(0xF004), u(0xF005), u(0xF006), u(0xF007), u(0xF008)

local oneChar = {
	["ґ"] = "г" .. a, ["ꙣ"] = "д" .. a, ["є"] = "е", ["ѕ"] = "ж" .. a, ["ꙃ"] = "ж" .. a, ["ꙅ"] = "ж" .. a, ["ꙁ"] = "з", ["і"] = "и" .. a, ["ї"] = "и" .. a, ["ꙇ"] = "и" .. a, ["ђ"] = "и" .. b, ["ꙉ"] = "и" .. b, ["ѻ"] = "о", ["ꙩ"] = "о", ["ꙫ"] = "о", ["ꙭ"] = "о", ["ꙮ"] = "о", ["ꚙ"] = "о", ["ꚛ"] = "о", ["ꙋ"] = "у", ["ѡ"] = "х" .. a, ["ѽ"] = "х" .. a, ["ꙍ"] = "х" .. a, ["ѿ"] = "х" .. a, ["ꙑ"] = "ы", ["ѣ"] = "ь" .. a, ["ꙗ"] = "ь" .. b, ["ѥ"] = "ь" .. c, ["ꙕ"] = "ю", ["ѧ"] = "я", ["ꙙ"] = "я", ["ѩ"] = "я" .. a, ["ꙝ"] = "я" .. a, ["ꙛ"] = "я" .. b, ["ѫ"] = "я" .. c, ["ѭ"] = "я" .. d, ["ѯ"] = "я" .. e, ["ѱ"] = "я" .. f, ["ѳ"] = "я" .. g, ["ѵ"] = "я" .. h, ["ҁ"] = "я" .. i
}

local twoChars = {
	["кг"] = "г" .. a, ["оу"] = "у",
}

function export.makeSortKey(text, lang, sc)
	text = mw.ustring.lower(text)
	
	for from, to in pairs(twoChars) do
		text = mw.ustring.gsub(text, from, to)
	end
	
	return mw.ustring.upper(mw.ustring.gsub(text, ".", oneChar))
end

return export