Module:Documentation module

De Ekopedia
Aller à : navigation, rechercher

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

Modèle:Méta lien vers projet


-- 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 .. '&#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