Module:Documentation module
La documentation de ce module Scribunto écrit en Lua est incluse depuis sa sous-page de documentation.
Projet Scribunto : Aide · Catégorie:Modules · Index complet des modules et de leur documentation ·
{{Module|nom du module}}
· {{Modèle utilisant les modules Lua}}
Modules de base :
Documentation module
· String
· List
· Wikibase
· TNT
Utilisation
modifierListe des fonctions exportées par le module sous la forme :
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 = {}
-- Test 2 en 1, fonction qui fait tout.
function p.doc( frame )
-- Le titre complet de la page actuelle.
local moduleTitle = mw.title.getCurrentTitle();
-- Vérification : le module et sa doc sont dans l’espace module.
if moduleTitle.nsText ~= 'Module' then
return '<span class="error">Invocation de'
.. ' <code>([[Module:Documentation module]]).doc()</code>'
.. ' en dehors d’une page de module ou de sa sous-page Documentation'
.. ' (incorrect depuis l’espace ' .. moduleTitle.nsText .. ')</span>';
end
local result1, result2 =
'<div class="template-documentation"'
.. ' style="clear:both;margin:2px 0;background:#ecf0fc;color:#222;border:1px solid #aaa;padding:2px .5em;line-height:1.6">'
, '<div style="clear:both"></div>\n</div>\n'; -- Ce code final peut aussi être inséré automatiquement après une transclusion automatique.
local modulePagename = moduleTitle.nsText .. ':' .. moduleTitle.text;
local moduleCurrent, docPagename, docTitle;
if moduleTitle.subpageText == 'Documentation' then
-- C’est donc la sous-page de documentation du module.
-- On récupère le title du module.
docPagename = modulePageName;
docTitle = moduleTitle;
modulePagename = docTitle.nsText .. ':' .. docTitle.baseText;
moduleTitle = mw.title.new(modulePagename);
moduleCurrent = false;
else
-- C’est donc la page du module. Supprime la fermeture de la boîte.
-- Après sera transcluse la documentation elle-même, puis MediaWiki
-- fermera autotiquement les balises ouvertes avant d'afficher le
-- code du module lui-même
-- On a le titre du module, on crée le titre de sa sous-page de doc.
docPagename = modulePagename .. '/Documentation';
docTitle = mw.title.new(docPagename);
-- S’il n’y a pas encore de sous-page de doc on fait juste un affichage proposant de la créer.
if docTitle.id == 0 then
-- Rien d’autre à faire.
return result1
.. '<em>La sous-page de documentation de ce [[Aide:Module|module Scribunto]] écrit en Lua n’existe pas encore.<br /> '
.. 'Vous pouvez la créer en <span class="plainlinks">['
.. docTitle:fullUrl({ action = 'edit', preload = 'Modèle:Documentation/PreloadModule' })
.. ' suivant ce lien]</span>.</em>'
.. '[[Catégorie:Modules non documentés|' .. moduleTitle.text .. ']]'
.. result2;
end
moduleCurrent = true;
end
result1, result2 = result1
-- Ajoute le div d’entête.
.. '\n<div style="margin-bottom:.3em;border-bottom:1px solid #aaa;padding-bottom:.3em">'
.. '[[Fichier:Template-info.png|58px|link=|alt=]] '
.. '<b style="font-size:125%">Documentation du module</b> '
.. '<span id="doc_editlinks" class="editsection plainlinks">'
.. '[[' .. docTitle:fullUrl( '' ) .. ' voir]] '
.. '[[' .. docTitle:fullUrl( 'action=edit' ) .. ' modifier]] '
.. '[[' .. moduleTitle:fullUrl( 'action=purge' ) .. ' purger]]'
.. '</span>' -- Fin des liens.
.. '</div>\n' -- Ferme le div d’entête.
.. '<div style="margin-bottom:.5em;padding-left:2em"><em>',
'</em></div>\n' .. result2;
if moduleCurrent then
-- Dans le module : on affiche un court message + liens puis on laisse le contenu en transclusion automatique.
return result1
.. 'La documentation de ce [[Aide:Module|module Scribunto]] écrit en Lua est [[Aide:Inclusion|incluse]] depuis sa [['
.. docPagename .. '|sous-page de documentation]].'
.. '[[Catégorie:Modules documentés|' .. moduleTitle.text .. ']]'
.. result2;
else
-- Dans la page de doc : on affiche un message d'explication et on ferme tout
return result1
.. 'Ceci est la page de documentation du [[Aide:Module|module Scribunto]] dont le code écrit en Lua est dans la page <b>[['
.. modulePagename
.. ']]</b> <small class="plainlinks">[['
.. moduleTitle:fullUrl( 'action=history' )
.. ' historique]]</small>.<br /> <small>Cette page n’est pas destinée à être visualisée directement. '
.. 'Les liens utilisant des [[Aide:Liste des modèles spéciaux#var|pseudo-variables]] peuvent paraître rompus (en rouge) ; '
.. 'ne pas les remplacer par des noms de pages codés en dur ni des [[Uniform Resource Locator|URL]].</small>'
.. '[[Catégorie:Documentations de modules|' .. moduleTitle.text .. ']]'
.. result2;
end
end
return p