Module:clé de tri

Bonjour, vous êtes venu ici pour chercher la signification du mot Module:clé de tri. Dans DICTIOUS, vous trouverez non seulement toutes les significations du dictionnaire pour le mot Module:clé de tri, mais vous apprendrez également son étymologie, ses caractéristiques et comment dire Module:clé de tri au singulier et au pluriel. Tout ce que vous devez savoir sur le mot Module:clé de tri est ici. La définition du mot Module:clé de tri vous aidera à être plus précis et correct lorsque vous parlerez ou écrirez vos textes. Connaître la définition deModule:clé de tri, ainsi que celles d'autres mots, enrichit votre vocabulaire et vous fournit des ressources linguistiques plus nombreuses et de meilleure qualité.

 Documentation[voir] [modifier] [historique] [purger]

Invoqué dans {{clé de tri}} et {{clé par langue}}.


local p = {}

-- Le caractère ⿕ utilisé ci-après correspond au caractère de point de code le plus élevé
-- dans le jeu de caractères utilisé sur le Wiktionnaire, et permet de forcer une lettre
-- à être classée à la suite d’une lettre donnée, le classement par défaut se contentant d’ignorer les diacritiques
p.hash = {}
p.hash = {} -- pour retirer les diacritiques
p.hash = {  = 'c⿕',  = 'c⿕⿕' }
p.hash = {  = 'z⿕',  = 'z⿕⿕',  = 'z⿕⿕⿕' }
p.hash = {  = 'cx',  = 'gx',  = 'hx',  = 'jx',  = 'sx',  = 'ux' }
p.hash = {  = 'n⿕' }
p.hash = {  = 'g⿕',  = 'l⿕',  = 'm⿕',  = 'n⿕',  = 'n⿕⿕',
				   = 'n⿕⿕⿕',  = 'r⿕',  = 's⿕',  = 'v⿕' }
p.hash = {  = 'z⿕',  = 'z⿕⿕',  = 'z⿕⿕⿕' }
p.hash = {  = 'c⿕',  = 'd⿕',  = 'd⿕⿕',  = 'g⿕',  = 'l⿕',
				  = 'n⿕',  = 's⿕',  = 't⿕',  = 'z⿕' }
p.hash = {  = 'a⿕',  = 'd⿕',  = 'e⿕',  = 'i⿕',  = 'o⿕',  = 'u⿕',  = 'y⿕',  = 'z',  = 'z⿕',  = 'z⿕⿕' }
p.hash = {  = 'd⿕',  = 'd⿕⿕',  = 'eaa',  = 'g⿕',  = 'g⿕⿕',
				   = 'k',  = 'k⿕',  = 'k⿕',  = 'k⿕⿕',  = 'k⿕⿕⿕',
				   = 'n⿕',  = 'o⿕',  = 't⿕⿕',  = 't⿕⿕⿕',  = 't⿕⿕⿕⿕',
				   = 't⿕⿕⿕⿕⿕',  = 'y⿕',  = 'y⿕',
				   = 'a⿕',  = 'b',  = 'g',  = 'l',   = 't⿕',
                   = 'u⿕',   = 'z' }
p.hash = p.hash
p.hash = p.hash
p.hash = p.hash
p.hash = {  = 'a⿕',  = 'e⿕' }
p.hash = {  = 'd⿕',   = 'd⿕⿕',  = 'd⿕⿕⿕',  = 'd⿕⿕⿕⿕',  = 'd⿕⿕⿕⿕⿕' }
p.hash = {  = 'c⿕',   = 'c⿕⿕',  = 'c⿕⿕⿕',  = 'd⿕',  = 'd⿕⿕',  = 'g⿕',  = 'g⿕⿕',  = 'g⿕⿕⿕',
					 = 'n⿕',  = 'n⿕⿕',  = 's⿕',  = 's⿕⿕',  = 's⿕⿕⿕',  = 's⿕⿕⿕⿕',  = 't⿕',  = 'z⿕' }
p.hash = {  = 'a⿕',  = 'c⿕',  = 'd⿕',  = 'n⿕',  = 's⿕',  = 't⿕',  = 'z⿕' }
p.hash = {  = 'c⿕',  = 's⿕',  = 'z⿕' }
p.hash = p.hash
p.hash = {  = 'a⿕',  = 'a⿕',  = 'a⿕',  = 'a⿕',  = 'a⿕',  = 'a⿕',
				  = 'a⿕⿕',  = 'a⿕⿕',  = 'a⿕⿕',  = 'a⿕⿕',  = 'a⿕⿕',  = 'a⿕⿕',
				  = 'd⿕',
				  = 'e⿕',  = 'e⿕',  = 'e⿕',  = 'e⿕',  = 'e⿕',  = 'e⿕',
				  = 'o⿕',  = 'o⿕',  = 'o⿕',  = 'o⿕',  = 'o⿕',  = 'o⿕',
				  = 'o⿕⿕',  = 'o⿕⿕',  = 'o⿕⿕',  = 'o⿕⿕',  = 'o⿕⿕',  = 'o⿕⿕',
				  = 'u⿕',  = 'u⿕',  = 'u⿕',  = 'u⿕',  = 'u⿕',  = 'u⿕' }

local function ucfirst(text)
	return text and mw.ustring.gsub(text, "^.", mw.ustring.upper)
end

local function str_subst(text, hash, max_len)
	local len_text = mw.ustring.len(text)
	local position = 1
	local result = {}
	while position <= len_text do
		local val = nil
		local found_len = nil
		for len_sub = max_len, 1, -1 do
			val = hash
			if val then
				found_len = len_sub
				break
			end
		end	

		table.insert(result, val or mw.ustring.sub(text, position, position)) -- par défaut
		position = position + (found_len or 1)
	end
	
	return table.concat(result)
end

function p.clef(titre, langue)
    if titre == nil then return nil end
    langue = mw.text.trim(langue or 'fr') -- français par défaut

    -- Remplacement de certains symboles par des espaces
    titre = mw.ustring.gsub(titre, "", " ")
    titre = mw.ustring.gsub(titre, "%s+", " ")
    -- les apostrophes sont supprimées
	if langue ~= 'tsolyáni' then titre = mw.ustring.gsub(titre, "’", "") end
    
	-- Fonctions particulières par langue
	if langue == 'ja' then
		local ja = require('Module:ja-kana')
		return ja.kana_sans_longue(titre)
	end
	if langue == 'tsolyáni' then titre = mw.ustring.gsub(titre, "-+", "") end

    -- Cas particuliers par langue
	local hash = p.hash
	if hash == nil then
		return titre -- pas une langue spéciale
	end

	-- table pour la majuscule
	local hash_maj = {}
	local max_len = 1
	for key, value in pairs(hash) do
		max_len = math.max(max_len, mw.ustring.len(key))
		hash_maj = value
		hash_maj = mw.ustring.upper(value)
		hash_maj = ucfirst(value)
	end

    -- Cas particuliers par langue
    titre = str_subst(titre, hash_maj, max_len)

    -- Décompose la chaîne notamment en séparant les accents
    local nfd = mw.ustring.toNFD(titre)
    if nfd == nil then return nil end

    -- Enlève les caractères qui ne sont ni des lettres, ni des chiffres, ni le signe ⿕
    local noacc = mw.ustring.gsub(nfd, "", "")
    return noacc
end

function p.cle_de_tri(frame)
    local titre = frame.args
    local langue = frame.args
    return p.clef(titre, langue)
end

return p