« Module:Dièse couleur web » : différence entre les versions

Une page de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
code de trim plus performant
j'aime bien comme ça, un peu plus lisible je trouve
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
-- http://lua-users.org/wiki/StringTrim
local function trim( s )
return s:match( '^()%s*$' ) and '' or s:match( '^%s*(.*%S)' )
end

local p = {}
local p = {}


Ligne 31 : Ligne 26 :


function p.main( frame )
function p.main( frame )
local value = trim( frame.args[ 1 ] )
local args = frame.args

local value = mw.text.trim( args[ 1 ] or '' )
if value == '' then
value = mw.text.trim( args[ 2 ] or '' )
end

-- paramètre "echappe" à true,
-- paramètre "echappe" à true,
-- pour échappement de l'éventuel "#" en début de résultat, en raison de [[phab:T14974]]
-- pour échappement de l'éventuel "#" en début de résultat, en raison de [[phab:T14974]]

Dernière version du 10 décembre 2023 à 10:29

 Documentation[voir] [modifier] [historique] [purger]

Ce module Lua est utilisé par le modèle {{Dièse couleur web}}.

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 args = frame.args

    local value = mw.text.trim( args[ 1 ] or '' )
    if value == '' then
        value = mw.text.trim( args[ 2 ] or '' )
    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