Module:section article/analyse
Apparence
La documentation pour ce module peut être créée à Module:section article/analyse/Documentation
-- Test liste : [[Discussion module:section article/analyse]]
b = require("Module:bases")
local titres = mw.loadData('Module:section article/data')
local p = {}
function _get_alias(code)
aliases = {}
for code, valeur in pairs(titres['alias']) do
if (aliases[valeur] == nil) then aliases[valeur]={} end
table.insert(aliases[valeur], code)
end
return aliases
end
function _code_de_section(section, tab)
-- Section d'un niveau défini ?
local niveau = tonumber(tab['niveau'])
local egals = '=====' -- défaut si non précisé
if niveau ~= nil then
if niveau == 3 then
egals = '==='
elseif niveau == 4 then
egals = '===='
end
end
local ligne_code = '<code>' .. egals .. ' {{S|' .. section .. '}} ' .. egals .. '</code>'
return ligne_code
end
function p.sort_titres(tab1, tab2)
local t1 = titres['texte'][tab1]
local t2 = titres['texte'][tab2]
if t1['niveau']..'' < t2['niveau']..'' then
return true
elseif t1['nom']..'' < t2['nom']..'' then
return false
end
end
-- Fonction qui affiche toutes les sections possibles
-- Fonction qui affiche tous les types de mot pris en compte
function p.affiche_sections()
-- Récupère les clés
local keyset={}
local n=0
for k,v in pairs(titres['texte']) do
n=n+1
keyset[n]=k
end
local tableaut = {"Cette liste est générée automatiquement à partir de [[Module:section article/data]].\r\n\r\nIl y a actuellement " .. n .. " titres de section dans cette liste.\r\nLa liste peut être triée."}
-- Construit un tableau pour afficher les types
entete = {'Nom', 'Code', 'Alias possibles', 'Niveau', 'Sous-section de'}
table.insert(tableaut, b.tableau_entete(entete))
-- Table inversée des alias
aliases = _get_alias(titres['alias'])
-- Tri par titre
table.sort(keyset, p.sort_titres)
for k, code in ipairs(keyset) do
local tab = titres['texte'][code]
local alias = aliases and aliases[code] or {}
table.insert(alias, 1, "'''" .. code .. "'''")
local texte_alias = table.concat(alias, '<br />')
local code = _code_de_section(code, tab)
local texte_parent = ((tab['parent'] and titres['texte'][tab['parent']] and titres['texte'][tab['parent']]['nom']) and titres['texte'][tab['parent']]['nom'] or tab['parent'])
local valeurs = {tab['nom'] or '-', code or '-', texte_alias or '-', tab['niveau'] or '-', texte_parent or '-'}
table.insert(tableaut, b.tableau_ligne(valeurs))
end
table.insert(tableaut, b.tableau_fin())
return table.concat(tableaut, "\r\n")
end
function p.affiche_code_remplacement_python()
local resultat = {}
local nombre = 0
for a,b in pairs(titres['texte']) do nombre = nombre+1 end
table.insert(resultat, '<pre>')
-- Table inversée des alias
aliases = _get_alias(titres['alias'])
for code, t in pairs(titres['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 .. ')\\}\\}", r"{{S|' .. code .. '}}"),';
table.insert(resultat, replacements)
end
end
table.insert(resultat, '</pre>')
return table.concat(resultat, "\r\n")
end
return p