Aller au contenu

Module:Documentation module

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 19 juillet 2024 à 20:09 et modifiée en dernier par Od1n (discuter | contributions) (retour à l'ancienne méthode, qui montre mieux que c'est la gestion d'un cas foireux (et meilleure correspondance entre le code et le commentaire)). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]


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 -- sous-pages « /Documentation » (veiller à ne pas inclure la page racine « Module:Documentation »)
        -- 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 .. '&#91;[' .. doc:fullUrl("") .. ' voir]&#93;'
    res = res .. '&#32;&#91;[' .. doc:fullUrl('action=edit') .. ' modifier]&#93;'
    res = res .. '&#32;&#91;[' .. titre:fullUrl("action=purge") .. ' purger]&#93;'
    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