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 12 janvier 2022 à 09:48 et modifiée en dernier par Od1n (discuter | contributions) (échappement du "#" uniquement avec la fonction main(), invoquée par les modèles (à ce jour seulement {{Dièse couleur web}}, et c'est très bien comme cela), mais pas avec la fonction couleur(), appelée par les modules (à ce jour seulement Module:Infobox/Titre)). 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 )
    if value:sub( 1, 1 ) == '#' then
        return value -- déjà un code hexadécimal précédé du "#"
    elseif ( #value == 6 or #value == 3 or #value == 8 or #value == 4 ) and value:match( '^%x+$' ) then
        return '#' .. value -- code hexadécimal auquel on ajoute le "#" manquant
    else
        return value -- nom de couleur HTML
    end
end

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

return p