Módulo:GETotal
Ir para navegação
Ir para pesquisar
Documentação do módulo
Esta documentação é transcluída de Módulo:GETotal/doc. [editar] [atualizar]
Módulo:GETotal's a função quantities é invocada por Predefinição:GETotalqty.
Módulo:GETotal's a função simple é invocada por Predefinição:GETotal.
Módulo:GETotal requer Módulo:Mercado.
Módulo:GETotal é solicitado por Módulo:Skill calc.
Módulo:GETotal é solicitado por Módulo:UsageCost.
--[[ <pre>
Implements helper templates for [Module:Infobox recipe]
{{GETotal}} and {{GETotalqty}}
Adds all prices together and creates an easy to parse number
--]]
local p = {}
local geprice = require('Módulo:Mercado')._price
--[[
For simple sets, 1 item at a time
{{GETotal|a|b|c}} will add the prices of a, b, and c
Does not allow quantities of items
Technically unlimited
--]]
function p.simple(frame)
local args = frame:getParent().args
local prices = {}
for _, v in ipairs(args) do
table.insert(prices,geprice(v))
end
return p._main(prices)
end
--[[
For stuff that's a but more complex
{{GETotalqty|name1=a|qty1=4|name2=b|qty2=1/4}}
Will add together the price of a * 4 and b / 4
Can recognize and parse vulgar fractions
All fractions and decimals will be truncated off the final price
Technically limited to 20, can be expanded as needed
--]]
function p.quantities(frame)
local args = frame:getParent().args
local prices = {}
for i=1,20,1 do
local itemx = args['name'..i] or args['nome'..i]
if itemx then
local priceret = geprice(itemx)
local qtyx = args['qty'..i] or args['quantidade'..i] or 1
local qtyret = tonumber(qtyx) or frac(qtyx) or 1
table.insert(prices,math.floor(priceret * qtyret))
end
end
return p._main(prices)
end
--[[
Helper function to parse vulgar fractions
If not readable as a vulgar fraction (i.e. no '/' character)
Returns nil, even if it can be read as a number
--]]
function frac(num)
if not num then
return nil
elseif not num:find('/') then
return nil
end
local parts = mw.text.split(num,'/')
local numer,denom = tonumber(parts[1]),tonumber(parts[2])
if numer and denom then
return numer / denom
else
return nil
end
end
--[[
Function to add prices together
]]--
function p._main(list)
local price = 0
for _, v in ipairs(list) do
price = price + v
end
return price
end
--[[
---- Module Access Point ----
Modified version of quantity.
Will add together the price of a * 4 and b / 4
Can recognize and parse vulgar fractions
All fractions and decimals will be truncated off the final price
Technically unlimited
To use:
variable 'a' = array of {quantity,"item name", etc...}
variable 'b' = number of unique items to be included
--]]
function p._quantity(a,b)
local values = a or {}
local count = b or 0
local prices = {}
for i=1 , (count*2) , 2 do
local itemx = a[i+1]
if itemx then
local priceret = geprice(itemx)
local qtyx = a[i] or 1
local qtyret = tonumber(qtyx) or frac(qtyx) or 1
table.insert(prices,math.floor(priceret * qtyret))
end
end
return p._main(prices)
end
return p