跳转到内容

模組:Value color

维基百科,自由的百科全书

这是Module:Value color当前版本,由Nebulatria留言 | 贡献编辑于2025年3月26日 (三) 01:46 建立内容为“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 = tonumber(args[1]) local minValue = tonumber(args[2]) local maxValue = tonumber(args[3]) if not (value and minValue and maxValue) then return require('Module:Error…”的新页面)。这个网址是本页该版本的固定链接。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
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 = tonumber(args[1])
	local minValue = tonumber(args[2])
	local maxValue = 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 = minR + ((maxR - minR) * percent)
	local green = minG + ((maxG - minG) * percent)
	local blue = minB + ((maxB - minB) * percent)
	
	local formatString = args['hex'] and '#%02x%02x%02x' or 'rgb(%.0f,%.0f,%.0f)'
	return string.format(formatString, red, green, blue)
end

return p