Module:Utils: Difference between revisions
From MCC Island Wiki
More actions
Created page with "local utils = {} function utils.expand(frame, title, ...) local args = {...} local templateArgs = {} for i, arg in ipairs(args) do if type(arg) == "string" and arg:match("^[^=]+=.+$") then local key, value = arg:match("^([^=]+)=(.+)$") templateArgs[key] = value else templateArgs[i] = tostring(arg) end end if frame.expandTemplate then return frame:expandTemplate{ title = title, args = templateArgs } else local argString = {} for i, arg in i..." |
added round function (originally local to Module:CosmeticMachine) |
||
Line 23: | Line 23: | ||
return string.format("{{%s|%s}}", title, table.concat(argString, "|")) | return string.format("{{%s|%s}}", title, table.concat(argString, "|")) | ||
end | end | ||
end | |||
function utils.round(n) | |||
local frac = math.abs(n) % 1 | |||
if frac == 0 then return n end | |||
local zeros = tostring(frac):match("%.(0*)") or "" | |||
local places = #zeros + 2 | |||
local factor = 10 ^ places | |||
local sign = n < 0 and -1 or 1 | |||
return math.floor(n * factor + 0.5) / factor | |||
end | end | ||
return utils | return utils |
Revision as of 07:06, 8 September 2025
Documentation for this module may be created at Module:Utils/doc
local utils = {}
function utils.expand(frame, title, ...)
local args = {...}
local templateArgs = {}
for i, arg in ipairs(args) do
if type(arg) == "string" and arg:match("^[^=]+=.+$") then
local key, value = arg:match("^([^=]+)=(.+)$")
templateArgs[key] = value
else
templateArgs[i] = tostring(arg)
end
end
if frame.expandTemplate then
return frame:expandTemplate{ title = title, args = templateArgs }
else
local argString = {}
for i, arg in ipairs(args) do
table.insert(argString, tostring(arg))
end
return string.format("{{%s|%s}}", title, table.concat(argString, "|"))
end
end
function utils.round(n)
local frac = math.abs(n) % 1
if frac == 0 then return n end
local zeros = tostring(frac):match("%.(0*)") or ""
local places = #zeros + 2
local factor = 10 ^ places
local sign = n < 0 and -1 or 1
return math.floor(n * factor + 0.5) / factor
end
return utils