Module:G: Difference between revisions

From Wavu Wiki, the 🌊 wavy Tekken wiki
No edit summary
m (Update to new version of Mixup layout that groups colors based on min and max limits)
Line 5: Line 5:
local p = {}
local p = {}


local steps = 15
local bins = 15
local palette = 'diverging-red-blue'
local palette = 'diverging-red-blue'


Line 19: Line 19:
p._main = function(val, left, right, invert)
p._main = function(val, left, right, invert)
invert = invert or false
invert = invert or false
local step = math.max(0, math.min(steps - 1,
local transformed = (val - left) * bins / (right - left)
math.floor((val - left) * steps / (right - left + 1))
local bin_idx = math.max(0, math.min(bins - 1, math.floor(transformed)))
))
if bin_idx == math.floor(bins / 2) then
if invert then step = steps - 1 - step end
if val > 0 then
return 'gradient_' .. palette .. '_' .. step
bin_idx = bin_idx + 1
elseif val < 0 then
bin_idx = bin_idx - 1
end
end
if invert then bin_idx = steps - 1 - bin_idx end
return 'gradient_' .. palette .. '_' .. bin_idx
end
end


return p
return p

Revision as of 02:31, 28 May 2024

Documentation for this module may be created at Module:G/doc

-- Take a number and calculate how many steps in the gradient it is.
-- Output is a class name defined in MediaWiki:Common.css.

local yesno = require('Module:Yesno')
local p = {}

local bins = 15
local palette = 'diverging-red-blue'

p.main = function(frame)
	local val = tonumber(frame.args[1])
	if val == nil then return '' end
	local right = tonumber(frame.args['right']) or 100
	local left = tonumber(frame.args['left']) or right * -1
	local invert = yesno(frame.args['invert'], false)
	return p._main(val, left, right, invert)
end

p._main = function(val, left, right, invert)
	invert = invert or false
	local transformed = (val - left) * bins / (right - left)
	local bin_idx = math.max(0, math.min(bins - 1, math.floor(transformed)))
	if bin_idx == math.floor(bins / 2) then
		if val > 0 then
			bin_idx = bin_idx + 1
		elseif val < 0 then
			bin_idx = bin_idx - 1
		end
	end
	if invert then bin_idx = steps - 1 - bin_idx end
	return 'gradient_' .. palette .. '_' .. bin_idx
end

return p