RogerDodger (talk | contribs) No edit summary |
RogerDodger (talk | contribs) No edit summary |
||
Line 12: | Line 12: | ||
local right = tonumber(frame.args['right']) or 100 | local right = tonumber(frame.args['right']) or 100 | ||
local left = tonumber(frame.args['left']) or right * -1 | local left = tonumber(frame.args['left']) or right * -1 | ||
return p._main(val, left, right) | local invert = yesno(frame.args['invert'], false) | ||
return p._main(val, left, right, invert) | |||
end | end | ||
p._main = function(val, left, right) | p._main = function(val, left, right, invert) | ||
invert = invert or false | |||
local step = math.max(0, math.min(steps - 1, | local step = math.max(0, math.min(steps - 1, | ||
math.floor((val - left) * steps / (right - left + 1)) | math.floor((val - left) * steps / (right - left + 1)) | ||
)) | )) | ||
if invert then step = steps - 1 - step end | |||
return 'gradient_' .. palette .. '_' .. step | return 'gradient_' .. palette .. '_' .. step | ||
end | end | ||
return p | return p |
Revision as of 07:32, 5 January 2022
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 p = {}
local steps = 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 step = math.max(0, math.min(steps - 1,
math.floor((val - left) * steps / (right - left + 1))
))
if invert then step = steps - 1 - step end
return 'gradient_' .. palette .. '_' .. step
end
return p