La documentation pour ce module peut être créée à Module:types de mots/analyse/Documentation

local b = require("Module:bases")
local t = require("Module:types de mots")
local p = {}

function _get_alias(ali, code)
    aliases = {code}
    for code, valeur in pairs(ali) do
        if (aliases[valeur] == nil) then aliases[valeur]={} end
        table.insert(aliases[valeur], code)
    end
    return aliases
end

function p.sort_types(tab1, tab2)
    if tab1 < tab2 then
        return true
    else
        return false
    end
end

-- Fonction qui affiche tous les types de mot pris en compte
function p.affiche_types(frame)
    
    -- Récupère les clés
    local keyset={}
    local n=0
 
    for k,v in pairs(t.types['texte']) do
      n=n+1
      keyset[n]=k
    end
    
    local tableaut = {"Cette liste est générée automatiquement à partir de [[Module:types de mots/data]].\r\n\r\nIl y a actuellement " .. n .. " types de mots dans cette liste.\r\nLa liste peut-être triée.\r\n\r\n'''Ce sont les noms au singulier qui doivent être utilisés dans le modèle [[Modèle:S|{{S}}]]'''.\r\n"}
	
    -- Construit un tableau pour afficher les types
    titres = {'Abréviation (ancre)', 'Nom singulier', 'Nom pluriel', 'Locution singulier', 'Locution pluriel', 'Alias possibles'}
    table.insert(tableaut, b.tableau_entete(titres))
    
    -- Table inversée des alias
    aliases = _get_alias(t.types['alias'])
    
    -- Intro
    -- Tri par nom de langue
    table.sort(keyset, p.sort_types)
    
    for k, code in ipairs(keyset) do
    	
    	local tab = t.types['texte'][code]
        local alias = aliases and aliases[code] or {}
        table.insert(alias, 1, "'''" .. code .. "'''")
        local texte_alias = table.concat(alias, '<br />')
        local valeurs = {tab['abrev'] or '-', tab['mot'] or '-', b.fait_categorie(b.ucfirst(tab['mot_pl']), tab['mot_pl'], true) or '-', tab['locution'] or '-', b.fait_categorie(b.ucfirst(tab['locution_pl']), tab['locution_pl'], true) or '-', texte_alias}
        table.insert(tableaut, b.tableau_ligne(valeurs))
    end
    table.insert(tableaut, b.tableau_fin())
    
    return table.concat(tableaut, "\r\n")
    --return aliases['nom'][1]
end

function p.affiche_code_remplacement_python()
    local resultat = {}
 
    local nombre = 0
    for a,b in pairs(t.types['texte']) do nombre = nombre+1 end
 
    table.insert(resultat, '<pre>')
 
    -- Table inversée des alias
    aliases = _get_alias(t.types['alias'])
 
    for code, t in pairs(t.types['texte']) do
        local alias = aliases and aliases[code] or {}
        if #alias > 0 then
            local texte_alias = table.concat(alias, '|')
            local replacements = '(u"\\{\\{S\\|(' .. texte_alias .. ')\\|", u"{{S|' .. code .. '|"),';
            table.insert(resultat, replacements)
        end
    end
    table.insert(resultat, '</pre>')
 
    return table.concat(resultat, "\r\n")
end

return p