Module:GEMinMax: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(Created page with "-- <nowiki> local prices = mw.loadJsonData('Module:GEPrices/data.json') local _coins = require('Module:Currency')._amount local p = {} local fmap = { wikitable = 'wikitable', wikitablereverse = 'wikitablereverse', table = 'wikitable', t = 'wikitable', rtable = 'wikitablereverse', rt = 'wikitablereverse', bracket = 'bracket', b = 'bracket', backetreverse = 'backetreverse', rb = 'backetreverse', item = 'item', price = 'price', none = 'none' } local formats =...") |
No edit summary Tag: Reverted |
||
Line 1: | Line 1: | ||
-- <nowiki> |
|||
local prices = mw.loadJsonData('Module:GEPrices/data.json') |
|||
local _coins = require('Module:Currency')._amount |
|||
local p = {} |
local p = {} |
||
local expr = mw.ext.ParserFunctions.expr |
|||
⚫ | |||
⚫ | |||
local args = getargs(frame) |
|||
wikitable = 'wikitable', |
|||
return p._min(args) |
|||
wikitablereverse = 'wikitablereverse', |
|||
⚫ | |||
table = 'wikitable', |
|||
t = 'wikitable', |
|||
rtable = 'wikitablereverse', |
|||
rt = 'wikitablereverse', |
|||
bracket = 'bracket', |
|||
b = 'bracket', |
|||
backetreverse = 'backetreverse', |
|||
rb = 'backetreverse', |
|||
item = 'item', |
|||
price = 'price', |
|||
none = 'none' |
|||
} |
|||
local formats = { |
|||
wikitable = function(i,v) return string.format('| %s\n| %s', i, v) end, |
|||
wikitablereverse = function(i,v) return string.format('| %s\n| %s', v, i) end, |
|||
bracket = function(i,v) return string.format('%s (%s)', i, v) end, |
|||
backetreverse = function(i,v) return string.format('%s (%s)', v, i) end, |
|||
item = function(i,v) return i end, |
|||
price = function(i,v) return v end, |
|||
none = function(i,v) return '' end |
|||
} |
|||
function |
function p._min(tbl) |
||
local |
local low = tbl[1] |
||
local value = def |
|||
for |
for _, v in ipairs(tbl) do |
||
if v < low then |
|||
low = v |
|||
⚫ | |||
⚫ | |||
item = v |
|||
⚫ | |||
end |
end |
||
end |
end |
||
return |
return low |
||
end |
end |
||
function p. |
function p.max(frame) |
||
local args = getargs(frame) |
|||
return findVal(function(pr,v) return v > pr end, math.huge, args) |
|||
return p._max(args) |
|||
⚫ | |||
⚫ | |||
return findVal(function(pr,v) return v < pr end, -1, args) |
|||
end |
end |
||
function p. |
function p._max(tbl) |
||
local |
local high = tbl[1] |
||
⚫ | |||
for _, v in ipairs(tbl) do |
|||
local f = fmap[pargs.format] |
|||
⚫ | |||
f = formats[f] or formats.bracket |
|||
⚫ | |||
local r1, r2 = p['_'..c](pargs) |
|||
⚫ | |||
if pargs.coins == 'y' then |
|||
r2 = _coins(r2, 'coins') |
|||
elseif pargs.coins == 'n' then |
|||
r2 = _coins(r2, 'nocoins') |
|||
elseif pargs.coins == 'f' then |
|||
r2 = mw.getContentLanguage():formatNum(r2) |
|||
⚫ | |||
if pargs.link == 'plp' then |
|||
r1 = string.format('[[File:%s.png|link=%s]]', r1, r1) |
|||
elseif pargs.link == 'p' then |
|||
r1 = string.format('[[File:%s.png|link=%s]] [[%s]]', r1, r1, r1) |
|||
elseif not pargs.link then |
|||
⚫ | |||
end |
end |
||
return high |
|||
⚫ | |||
⚫ | |||
mw.ext.VariablesLua.vardefine(pargs.var..'_item', r1) |
|||
mw.ext.VariablesLua.vardefine(pargs.var..'_price', r2) |
|||
function getargs(frame) |
|||
⚫ | |||
⚫ | |||
for _, v in ipairs(args) do |
|||
⚫ | |||
w = tonumber(w) or tonumber(expr(w)) |
|||
⚫ | |||
table.insert(nums,w) |
|||
end |
|||
end |
end |
||
return |
return nums |
||
end |
end |
||
return p |
return p |
||
-- </nowiki> |
Revision as of 00:12, 17 October 2024
Module documentation
This documentation is transcluded from Module:GEMinMax/doc. [edit] [history] [purge]
Module:GEMinMax's function main is invoked by Template:MaxPrice.
Module:GEMinMax's function main is invoked by Template:MinPrice.
Module:GEMinMax is invoked by Template:MinPrice.
Module:GEMinMax is invoked by Template:MaxPrice.
Module:GEMinMax requires Module:Currency.
Module:GEMinMax loads data from Module:GEPrices/data.json.
local p = {}
local expr = mw.ext.ParserFunctions.expr
function p.min(frame)
local args = getargs(frame)
return p._min(args)
end
function p._min(tbl)
local low = tbl[1]
for _, v in ipairs(tbl) do
if v < low then
low = v
end
end
return low
end
function p.max(frame)
local args = getargs(frame)
return p._max(args)
end
function p._max(tbl)
local high = tbl[1]
for _, v in ipairs(tbl) do
if v > high then
high = v
end
end
return high
end
function getargs(frame)
args = frame:getParent().args
local nums = {}
for _, v in ipairs(args) do
local w = string.gsub(v,',','')
w = tonumber(w) or tonumber(expr(w))
if w then
table.insert(nums,w)
end
end
return nums
end
return p