Jump to content

Module:Value color

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by R1F4T (talk | contribs) at 20:10, 24 July 2024. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local getArgs = require('Module:Arguments').getArgs
local p = {}
local function rgb(color)
    local _, _, R, G, B = color:find('(%w%w)(%w%w)(%w%w)')
    return tonumber(R, 16), tonumber(G, 16), tonumber(B, 16)
end
function p.main(frame)
    local args = getArgs(frame)
    local value, minValue, maxValue = tonumber(args[1]), tonumber(args[2]), tonumber(args[3])
    if not (value and minValue and maxValue) then
        return require('Module:Error').error{'Parameters 1, 2, and 3 are required and must be numbers.'}
    end
    local minR, minG, minB = rgb(args[4] or 'FFFFFF')
    local maxR, maxG, maxB = rgb(args[5] or '000000')
    local percent = math.max(0, math.min(1, (value - minValue) / (maxValue - minValue)))
    local red, green, blue = minR + (maxR - minR) * percent, minG + (maxG - minG) * percent, minB + (maxB - minB) * percent
    return args['hex'] and string.format('#%x%x%x', red, green, blue) or string.format('rgb(%.0f,%.0f,%.0f)', red, green, blue)
end

return p