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 14 avril 2020 à 05:56 et modifiée en dernier par Od1n (discuter | contributions) (autre approche, avec pour avantage que le nombre de caractères n'est plus couplé à la regex ; et devrait être plus performant dans la majorité des situations, avec exécution d'un match() au lieu de deux (pour rappel, le cas "code hex mais sans dièse", c'est une écriture qui serait à proscrire)). 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:find('#') == 1 then
        return '#' .. value:sub(2)
    elseif (#value == 6 or #value == 3) and value:match('^%x+$') then
        return '#' .. value
    else
        return value
    end
end

function p.main(frame)
    local value = mw.text.trim(frame.args[1])
    return p.couleur(value)
end

return p