La documentation pour ce module peut être créée à Module:section article/analyse/Documentation
-- Test liste : ]
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) do
if (aliases == nil) then aliases={} end
table.insert(aliases, code)
end
return aliases
end
function _code_de_section(section, tab)
-- Section d'un niveau défini ?
local niveau = tonumber(tab)
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
local t2 = titres
if t1..'' < t2..'' then
return true
elseif t1..'' < t2..'' 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) do
n=n+1
keyset=k
end
local tableaut = {"Cette liste est générée automatiquement à partir de ].\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)
-- Tri par titre
table.sort(keyset, p.sort_titres)
for k, code in ipairs(keyset) do
local tab = titres
local alias = aliases and aliases or {}
table.insert(alias, 1, "'''" .. code .. "'''")
local texte_alias = table.concat(alias, '<br />')
local code = _code_de_section(code, tab)
local texte_parent = ((tab and titres] and titres]) and titres] or tab)
local valeurs = {tab or '-', code or '-', texte_alias or '-', tab 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) do nombre = nombre+1 end
table.insert(resultat, '<pre>')
-- Table inversée des alias
aliases = _get_alias(titres)
for code, t in pairs(titres) do
local alias = aliases and aliases 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