Invoqué dans {{clé de tri}}
et {{clé par langue}}
.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis la page Module:clé de tri/Documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
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