Module:GEMinMax: Difference between revisions

From RuneRealm Wiki
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


function p.min(frame)
local fmap = {
local args = getargs(frame)
wikitable = 'wikitable',
return p._min(args)
wikitablereverse = 'wikitablereverse',
end
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 findVal(comp, def, args)
function p._min(tbl)
local item = '@unknown@'
local low = tbl[1]
local value = def
for i,v in ipairs(args) do
for _, v in ipairs(tbl) do
local pr = prices[v]
if v < low then
if pr then
low = v
if comp(pr, value) then
value = pr
item = v
end
end
end
end
end
return item, value
return low
end
end


function p._min(args)
function p.max(frame)
local args = getargs(frame)
return findVal(function(pr,v) return v > pr end, math.huge, args)
return p._max(args)
end
function p._max(args)
return findVal(function(pr,v) return v < pr end, -1, args)
end
end


function p.main(frame)
function p._max(tbl)
local c = frame.args[1]
local high = tbl[1]
local pargs = frame:getParent().args
for _, v in ipairs(tbl) do
local f = fmap[pargs.format]
if v > high then
f = formats[f] or formats.bracket
high = v
local r1, r2 = p['_'..c](pargs)
end
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)
end
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
r1 = string.format('[[%s]]', r1)
end
end
return high
if pargs.var then
end
mw.ext.VariablesLua.vardefine(pargs.var..'_item', r1)

mw.ext.VariablesLua.vardefine(pargs.var..'_price', r2)
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
end
return f(r1, r2)
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