Module:clé de tri2

Ce module permet de classer un mot dans l'ordre alphabétique d'une langue donnée.


local b = require("Module:bases")
local p = {}

function p.clef(titre, langue)
    if titre == nil then return nil end
    local clef = nil
    
    if langue == 'fr' or langue==nil then
        -- Remplace les tirets
        titre1 = mw.ustring.gsub(titre, "[-]", " ")
        
        -- Décompose la chaîne notamment en séparant les accents
        local nfd = mw.ustring.toNFD(titre1)
        if nfd == nil then return nil end
        
        -- Enlève les accents (= ne garde que les ascii)
        local noacc = mw.ustring.gsub(nfd, "[^a-zA-Z0-9 ]", "")
        
        -- Versions bas-de-casse
        local nfd_lc = b.lc(nfd)
        local noacc_lc = b.lc(noacc)
        
        -- Clé de tri finale
        local sep = ' - '
        clef = noacc_lc .. sep .. string.reverse(titre1) .. sep .. nfd
        -- NB : le logiciel refusionne automatiquement les nfd quand on le renvoie
    end
    return clef
end

function p.clef_de_tri(frame)
    local titre = frame.args[1]
    local langue = 'fr'
    return p.clef(titre, langue)
end

return p

-- Pour tester dans la console:
-- =p.clef('Champs-Élysées', 'fr')