มอดูล:aqc-sortkey

จาก วิกิพจนานุกรม พจนานุกรมเสรี
local export = {}
local u = mw.ustring.char
local a = u(0xF000)
local b = u(0xF001)
local c = u(0xF002)
local d = u(0xF003)
local e = u(0xF004)
local f = u(0xF005)
local g = u(0xF006)
local h = u(0xF007)
local i = u(0xF008)
local j = u(0xF009)
local k = u(0xF00A)
local l = u(0xF00B)
local m = u(0xF00C)
local n = u(0xF00D)
local o = u(0xF00E)

local monographs = {
	["ё"] = "е" .. d
}

local digraphs = {
	["аӏ"] = "а" .. a, ["аа"] = "а" .. b, ["гӏ"] = "г" .. a, ["гв"] = "г" .. c, ["гъ"] = "г" .. d, ["гь"] = "г" .. h, ["дв"] = "д" .. a, ["еӏ"] = "е" .. a, ["ее"] = "е" .. b, ["ёӏ"] = "е" .. e, ["ёо"] = "е" .. f, ["жв"] = "ж" .. a, ["зв"] = "з" .. a, ["иӏ"] = "и" .. a, ["ии"] = "и" .. b, ["кӏ"] = "к" .. a, ["кв"] = "к" .. c, ["кк"] = "к" .. d, ["къ"] = "к" .. j, ["кь"] = "к" .. n, ["лӏ"] = "л" .. a, ["лв"] = "л" .. c, ["лъ"] = "л" .. f, ["ль"] = "л" .. h, ["оӏ"] = "о" .. a, ["оо"] = "о" .. b, ["пӏ"] = "п" .. a, ["пв"] = "п" .. c, ["пп"] = "п" .. d, ["св"] = "с" .. a, ["сс"] = "с" .. b, ["тӏ"] = "т" .. a, ["тв"] = "т" .. c, ["тт"] = "т" .. d, ["уӏ"] = "у" .. a, ["уу"] = "у" .. b, ["фв"] = "ф" .. a, ["хӏ"] = "х" .. a, ["хв"] = "х" .. c, ["хх"] = "х" .. d, ["хъ"] = "х" .. h, ["цӏ"] = "ц" .. a, ["цв"] = "ц" .. c, ["цц"] = "ц" .. d, ["чӏ"] = "ч" .. a, ["чв"] = "ч" .. c, ["шв"] = "ш" .. a, ["щв"] = "щ" .. a, ["эӏ"] = "э" .. a, ["ээ"] = "э" .. b, ["юӏ"] = "ю" .. a, ["юу"] = "ю" .. b, ["яӏ"] = "я" .. a, ["яа"] = "я" .. b
}

local trigraphs = {
	["ааӏ"] = "а" .. c, ["гӏв"] = "г" .. b, ["гъӏ"] = "г" .. e, ["гъв"] = "г" .. g, ["гьв"] = "г" .. i, ["ееӏ"] = "е" .. c, ["ёоӏ"] = "е" .. g, ["ииӏ"] = "и" .. c, ["кӏв"] = "к" .. b, ["ккв"] = "к" .. e, ["ккъ"] = "к" .. f, ["къӏ"] = "к" .. k, ["къв"] = "к" .. m, ["кьв"] = "к" .. o, ["лӏв"] = "л" .. b, ["ллъ"] = "л" .. d, ["лъв"] = "л" .. g, ["льв"] = "л" .. i, ["ооӏ"] = "о" .. c, ["пӏв"] = "п" .. b, ["ппв"] = "п" .. e, ["ссв"] = "с" .. c, ["тӏв"] = "т" .. b, ["ттв"] = "т" .. e, ["ууӏ"] = "у" .. c, ["хӏв"] = "х" .. b, ["ххв"] = "х" .. e, ["хъӏ"] = "х" .. i, ["хъв"] = "х" .. k, ["хьӏ"] = "х" .. l, ["цӏв"] = "ц" .. b, ["ццӏ"] = "ц" .. e, ["ццв"] = "ц" .. g, ["чӏв"] = "ч" .. b, ["ччӏ"] = "ч" .. d, ["ээӏ"] = "э" .. c, ["юуӏ"] = "ю" .. c, ["яаӏ"] = "я" .. c
}

local tetragraphs = {
	["гъӏв"] = "г" .. f, ["ккъӏ"] = "к" .. g, ["ккъв"] = "к" .. i, ["къӏв"] = "к" .. l, ["ллъв"] = "л" .. e, ["ххьӏ"] = "х" .. f, ["хъӏв"] = "х" .. j, ["хьӏв"] = "х" .. m, ["ццӏв"] = "ц" .. f, ["ччӏв"] = "ч" .. e
}

local pentagraphs = {
	["ккъӏв"] = "к" .. h, ["ххьӏв"] = "х" .. g
}

function export.makeSortKey(text, lang, sc)
	for from, to in pairs(pentagraphs) do
		text = mw.ustring.gsub(text, from, to)
	end
	
	for from, to in pairs(tetragraphs) do
		text = mw.ustring.gsub(text, from, to)
	end
	
	for from, to in pairs(trigraphs) do
		text = mw.ustring.gsub(text, from, to)
	end
	
	for from, to in pairs(digraphs) do
		text = mw.ustring.gsub(text, from, to)
	end
	
	for from, to in pairs(monographs) do
		text = mw.ustring.gsub(text, from, to)
	end
	
	return text
end

return export