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 16 mars 2013 à 20:46 et modifiée en dernier par Hlm Z. (discuter | contributions). 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 == "doc") 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 .. "/doc"
        doc = mw.title.new(tdoc)
    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;padding-bottom:3px">'
    -- 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 .. "[[Fichier:Template-info.png|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 .. "<hr />" -- séparateur
        res = res .. "</span></div></div>[[Catégorie:Module en langage Lua sans documentation|" .. titre.text .. "]]"
        return res -- rien d'autre à faire
    end
    
    -- l'entête puisque la page existe
    res = res .. '[[Fichier:Template-info.png|50px|alt=Documentation du modèle|link=]]'
    res = res .. ' <span style="font-weight:bold;font-size:125%">Documentation</span>'
    res = res .. '<span id="doc_editlinks" class="editsection plainlinks">&#91;[' .. doc:fullUrl("action=edit") .. " modifier]&#93;"
    res = res .. '&#32;&#91;<span class="plainlinks">[' .. titre:fullUrl("action=purge") .. " purger]</span>&#93;</span>"
    res = res .. '<hr />' -- séparateur

    if (not mdl) then
        -- on a besoin du titre du module
        titre = mw.title.new(tdoc)
        -- dans la page de doc : on affiche un message d'explication et on ferme tout
        res = res .. "''Ceci est la page de documentation du [[Aide:Module|module]] dont le code est dans la page "
        res = res .. "'''[[" .. ttitre .. "]]''' <small>" .. '<span class="plainlinks">'
        res = res .. "([" .. titre:fullUrl("action=history") .. " historique])</span></small>''<br/>"
        res = res .. "<small>''Cette page n’est pas destinée à être visualisée directement. "
        res = res .. "Les liens utilisant des [[Aide:Liste_des_modèles_spéciaux#var|pseudo-variables]] peuvent "
        res = res .. "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>"
        -- on ferme les div
        res = res .. "</div></div>"
        return res -- c'est tout
    else
        -- dans le module : on affiche un court message+liens puis on laisse le contenu en transluction
        res = res .. "''La documentation de ce [[Aide:Module|module]] est [[Aide:Inclusion|incluse]] depuis sa "
        res = res .. "[[" .. tdoc .. "|sous-page de documentation]]''.<br />"
        -- on ferme *le* div (le reste reste ouvert)
        res = res .. "</div>"
        return res -- c'est tout
    end
end


return p