Aller au contenu

Module:Dièse couleur web

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 6 novembre 2023 à 10:04 et modifiée en dernier par Od1n (discuter | contributions) (la fonction mw.text.trim() a été optimisée : quand elle est utilisée avec le charset par défaut, elle emploie maintenant le même code qu'ici, voir T338561). 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

Ce module Lua est utilisé par le modèle {{Dièse couleur web}}. Il fournit une fonction permettant d'ajouter un éventuel # à un code hexadécimal pour en faire un code hexadécimal de couleur.

Fonctions exportables

  • main( frame ) – Prend en argument un frame de la forme { couleur, couleur_défaut }. Retourne couleur si couleur est non vide et #couleur si couleur est un code hexadécimal ; si couleur est vide, retourne la même chose pour couleur_défaut.
  • couleur( value, echappe )value est un code hexadécimal ou un nom de couleur, echappe est un booléen valant false par défaut. Retourne value si value est non vide et #value si value est un code hexadécimal. Si echappe vaut true, le # est échappé.

Modules externes et autres éléments dont ce module a besoin pour fonctionner

  • mw.text.trim – Enlève les espaces au début et à la fin d'une chaine de caractères.

Modèles appelant directement ce module

Modules lua utilisant ce module

Exemples

Appel depuis un modèle

Dans Modèle:Dièse couleur web, ce module est appelé par le code :

{{#invoke:Dièse couleur web|main|1={{{1}}}|2={{{2|}}}}}

Appel depuis un module

Dans Module:Infobox/Titre, ce module est appelé par le code :

local couleur = require( 'Module:Dièse couleur web' ).couleur

return 'background-color:' .. couleur( background ) .. ';'
		.. 'color:' .. couleur( color ) .. ';'
local p = {}

function p.couleur( value, echappe )
    if echappe == nil then
        echappe = false
    end
    if value:sub( 1, 1 ) == '#' then
        -- déjà un code hexadécimal précédé du "#"
        if echappe then
            return '#' .. value:sub( 2 )
        else
            return value
        end
    elseif ( #value == 6 or #value == 3 or #value == 8 or #value == 4 ) and value:match( '^%x+$' ) then
        -- code hexadécimal auquel on ajoute le "#" manquant
        if echappe then
            return '#' .. value
        else
            return '#' .. value
        end
    else
        -- nom de couleur HTML
        return value
    end
end

function p.main( frame )
    local value = mw.text.trim( frame.args[ 1 ] )
    if value == '' then
        value = mw.text.trim( frame.args[ 2 ] )
    end
    -- paramètre "echappe" à true,
    -- pour échappement de l'éventuel "#" en début de résultat, en raison de [[phab:T14974]]
    return p.couleur( value, true )
end

return p