Module:Documentation module

Documentation du module [voir] [modifier] [purger]
La documentation de ce module Scribunto écrit en Lua est incluse depuis sa sous-page de documentation.

Utilisation modifier

Liste 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">'
		.. '&#91;[' .. docTitle:fullUrl( '' ) .. ' voir]&#93; '
		.. '&#91;[' .. docTitle:fullUrl( 'action=edit' ) .. ' modifier]&#93; '
		.. '&#91;[' .. moduleTitle:fullUrl( 'action=purge' ) .. ' purger]&#93;'
		.. '</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">&#91;['
			.. moduleTitle:fullUrl( 'action=history' )
			.. ' historique]&#93;</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