Module:Documentation module
Révision datée du 24 février 2019 à 15:17 par Yves.bertin (discussion | contributions) (1 révision importée)
Utilisation
Fonctions exportables :
doc(frame)
– génère un entête de documentation s'adaptant au contexte :- depuis un module qui ne possède pas de sous-page de documentation : génère un message explicatif ainsi qu'un lien pour la création
- depuis un module qui possède une sous-page de documentation : génère un message explicatif ainsi que les liens vers la documentation
- depuis une sous-page de documentation d'un module : génère un message explicatif ainsi que les liens vers le module
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
mw.title
-- module contenant les fonctions permettant de gérer la documentation des modules
local p = {}
function p.erreur(texte)
return '<span class="error">' .. (texte or "''aucune erreur indiquée''") .. "</span>"
end
-- test : 2 en 1. Fonction qui fait tout.
function p.doc(frame)
local res = ""
-- le titre de la page
local titre = mw.title.getCurrentTitle()
local ttitre = titre.nsText .. ":" .. titre.text
local doc
local tdoc
-- vérification : le module et sa doc sont dans l'espace module
if (titre.nsText ~= "Module") then
return p.erreur("Inclusion du module en dehors d'un module ou de sa page de documentation (NS=" .. titre.nsText .. ")")
end
-- si la page courante est un "/doc" on n'a pas le bon titre (celui de la doc)
local mdl
if (titre.subpageText == "Documentation" and titre.text ~= titre.subpageText) then
-- c'est donc la page de doc
mdl = false
-- en fait ce qu'on a c'est la doc
doc = titre
tdoc = ttitre
-- on récupère le title du module
ttitre = doc.nsText .. ":" .. doc.baseText
titre = mw.title.new(ttitre)
else
mdl = true
-- on a bien le titre du module, on crée le titre de la doc
tdoc = titre.nsText .. ":" .. titre.text .. "/Documentation"
doc = mw.title.new(tdoc)
end
-- s'il n'y a pas de page de doc on fait juste un affichage proposant de le créer
if (doc.id == 0 and mdl) then
res = res .. '<div class="template-documentation" style="clear:both;margin: 1em 0 0 0;border:1px solid #aaa;background: #ecf0fc;padding:1em">'
res = res .. '<div><span style="margin-bottom:0.5em; padding-left:2em; font-style:italic">'
res = res .. "[[Fichier:Test Template Info-Icon.svg|50px|alt=Documentation du modèle|link=]] "
res = res .. "La sous-page de documentation de ce [[Aide:Module|module]] n'existe pas. Vous pouvez la créer en "
res = res .. '<span class="plainlinks">[' .. doc:fullUrl({ ["action"]="edit", ["preload"]="Modèle:Documentation/PreloadModule"})
res = res .. " suivant ce lien]</span>."
res = res .. '</span></div></div>[[Catégorie:Module en langage Lua sans documentation|' .. titre.text .. ']]'
return res -- rien d'autre à faire
end
-- on ouvre le grand div
res = res .. '<div class="template-documentation" style="clear:both; margin: 1em 0 0 0; border:1px solid #aaa; background: #ecf0fc; padding:1em">'
-- on ouvre le div "doc"
res = res .. '<div style="margin-bottom:1ex; border-bottom:1px solid #aaa; padding-bottom:3px">'
res = res .. '[[Fichier:Test Template Info-Icon.svg|50px|alt=Documentation du module|link=]] '
res = res .. ' <span style="font-weight:bold; font-size:125%">Documentation du module</span>'
-- s'il n'y a pas de page de doc on fait juste un affichage proposant de le créer
-- l'entête puisque la page existe
res = res .. '<span id="doc_editlinks" class="mw-editsection plainlinks">'
res = res .. '[[' .. doc:fullUrl("") .. ' voir]]'
res = res .. ' [[' .. doc:fullUrl('action=edit') .. ' modifier]]'
res = res .. ' [[' .. titre:fullUrl("action=purge") .. ' purger]]'
res = res .. '</span></div>' -- fin de l'entête et on ferme le div "doc"
if (mdl) then
-- dans le module : on affiche un court message + liens, puis on laisse le contenu en transclusion
res = res .. '<div style="margin-bottom:0.5em; padding-left:2em; font-style:italic">'
res = res .. 'La documentation de ce [[Aide:Module|module]] est [[Aide:Inclusion|incluse]] depuis sa '
res = res .. '[[' .. tdoc .. '|sous-page de documentation]].</div>'
return res -- c'est tout
end
end
return p