Module:Article détaillé

Une page de Wikipédia, l'encyclopédie libre.

 Documentation[créer] [purger]
-- module simple reprenant les fonctionnalités du modèle {{m|Article détaillé}}

local z = {}

function z.modele_m(nom)
    return "[[Modèle:" .. (nom or "") .. "|{{" .. (nom or "") .. "}}]]"
end


-- fonction Article détaillé.
function z.article_detaille(frame)
    -- les paramètres issus de l'utilisation du modèle associé
    local args = frame:getParent().args
    -- texte résultat
    local res = ""
    
    -- ouverture du div correspondant
    res = res .. '<div class="bandeau-section bandeau-niveau-detail loupe">'

    -- si le paramètre nommé "contenu" est donné il remplace tout le reste
    if (args["contenu"]) then
        return res .. args["contenu"] .. '</div>'
    end
    
    -- s'il n'y a aucun paramètre donné → erreur
    if (args[1] == nil or args[1] == "") then
        res = res .. '<span class="error">Erreur de paramétrage de ' .. z.modele_m("Article détaillé") .. ' : le paramètre <code>1</code> est obligatoire.</span></div>'
        -- si NS article → ajout de la catégorie
        if (frame:preprocess("{{NAMESPACE}}") == "") then
            res = res .. "[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|A]]"
        end
        return res
    end

    -- cas général
    -- si une amorce est fournie on l'utilise, sinon l'amorce par défaut
    if (args["amorce"]) then
        res = res .. args["amorce"]
    else -- amorce par défaut
        -- pluriel ?
        if (args[2]) then
            res = res .. "Articles détaillés"
        else -- pas de paramètre 2 → singulier
            res = res .. "Article détaillé"
        end
    end
    -- ajout des ":" de séparation
    res = res .. " : "
    
    -- maintenant on parcours les paramètres dans l'ordre, pour les insérer
    local pos = 1
    while (args[pos]) do
        -- séparateur : ", " sauf en dernier " et ", mais pas au début
        if (pos > 1) then
            if (args[pos+1]) then
                res = res .. ", "
            else
                res = res .. " et "
            end
        end
        -- on insert l'élément en cours
        res = res .. "[[" .. args[pos] .. "]]"
        -- suivant
        pos = pos + 1
    end
    
    -- point final et fermeture du div
    res = res .. ".</div>"
    
    -- on retourne le résultat
    return res
end

-- on retourne la table du module (obligatoire).
return z