Mòdul:Proves/Vriullop

De Viccionari
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul[mostra] [modifica] [refresca]

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


local p = {}

-- ordre:
-- consonants: c > ç, ll > l·l
-- vocals: a>à, e>é>è, i>í>ï, o>ó>ò, u>ú>ü
-- minúscules > majúscules
-- sense signes > amb signes -./'

local U = mw.ustring.char

local grave = U(0x300) -- àèò
local acute = U(0x301) -- éíóú
local diaeresis = U(0x308) -- ïü
local cedilla = U(0x327) -- ç

local diacritics = grave .. acute .. diaeresis .. cedilla
local diacritic = "[" .. diacritics .. "]"

local diacriticReplacements = {
	-- Order
	[grave] = 1,
	[acute] = 2,
	[diaeresis] = 3,
	[cedilla] = 4,
}
	
function p.ordena(text)
	if type(text) == "table" then text = text.args[1] end -- des de plantilles via invoke o des de mòduls via require
	local sortkey = mw.ustring.lower(text)
	
	sortkey = mw.ustring.gsub(sortkey, "'", " ")
	sortkey = mw.ustring.gsub(sortkey, "[/%-%.]", "")
	
	sortkey = mw.ustring.gsub(sortkey, "([aeiouc])", "%10")
	sortkey = mw.ustring.gsub(sortkey, "ll", "ll0")
	sortkey = mw.ustring.gsub(sortkey, "l·l", "ll1")
	
	sortkey = mw.ustring.toNFD(sortkey)
	
	sortkey = mw.ustring.gsub(
		sortkey,
		diacritic,
		function(diacritic)
			return diacriticReplacements[diacritic] or diacritic
		end
	)
	
	sortkey = mw.ustring.gsub(sortkey .. "!", "(%d)!", "!%1")
	
	sortkey = mw.ustring.upper(sortkey)
	
	return sortkey
end

function p.showSorting(frame)
	local terms = {}
	
	for i, term in ipairs(frame.args) do
		table.insert(terms, term)
	end
	
	--local ordena_func = p.ordena
	local ordena_func = require("Mòdul:ca-general").ordena
	
	local function comp(term1, term2)
		return ordena_func(term1) < ordena_func(term2)
	end
	
	table.sort(terms, comp)
	
	for i, term in pairs(terms) do
		terms[i] = "\n* " .. term .. " (<code>" .. ordena_func(term) .. "</code>)"
	end
	
	return table.concat(terms)
end

return p