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 1 avril 2013 à 22:50 et modifiée en dernier par Hexasoft (discuter | contributions) (test : attention, inclusion page de doc cassé). 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") 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><span style="margin-bottom:0.5em; padding-left:2em; font-style:italic">'
        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>[[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:Template-info.png|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="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 (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>"
        res = res .. "[[Catégorie:Documentation de module|" .. "test" .. "]]</div>"
        return frame:preprocess("<nowiki>" .. res .. "</nowiki>")  -- c'est tout
    else
        -- dans le module : on affiche un court message + liens puis on laisse le contenu en transluction
        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