Module:Mmgtable2: Difference between revisions

From Roat Pkz
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
local p = {}
local p = {}


local MAX_INPUTS = 10
function p.main(frame)
local MAX_OUTPUTS = 10
    local args = frame:getParent().args
    local inputs = {}
    local outputs = {}


local function calculateTotal(args, prefix, max)
     for i = 1, 10 do
    local total = 0
         local num = tonumber(args["Input" .. i .. "num"]) or 0
     for i = 1, max do
         local value = tonumber(args["Input" .. i .. "value"]) or 0
         local num = tonumber(args[prefix .. i .. 'num']) or 0
         table.insert(inputs, num * value)
         local value = tonumber(args[prefix .. i .. 'value']) or 0
 
         total = total + (num * value)
        local outnum = tonumber(args["Output" .. i .. "num"]) or 0
        local outvalue = tonumber(args["Output" .. i .. "value"]) or 0
        table.insert(outputs, outnum * outvalue)
     end
     end
    return total
end


function p.profit(frame)
     local inputTotal = 0
    local args = frame:getParent().args
     for _, v in ipairs(inputs) do inputTotal = inputTotal + v end
     local frameArgs = frame.args
 
    -- Merge frame.args into args in case of direct #invoke
     for k, v in pairs(frameArgs) do
        if v ~= '' then
            args[k] = v
        end
    end


     local inputs = calculateTotal(args, 'Input', MAX_INPUTS)
     local outputTotal = 0
     local outputs = calculateTotal(args, 'Output', MAX_OUTPUTS)
     for _, v in ipairs(outputs) do outputTotal = outputTotal + v end


     local profit = outputs - inputs
     local profit = outputTotal - inputTotal
     return tostring(profit)
     return tostring(profit)
end
end


return p
return p

Revision as of 10:57, 5 May 2025

Documentation for this module may be created at Module:Mmgtable2/doc

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    local inputs = {}
    local outputs = {}

    for i = 1, 10 do
        local num = tonumber(args["Input" .. i .. "num"]) or 0
        local value = tonumber(args["Input" .. i .. "value"]) or 0
        table.insert(inputs, num * value)

        local outnum = tonumber(args["Output" .. i .. "num"]) or 0
        local outvalue = tonumber(args["Output" .. i .. "value"]) or 0
        table.insert(outputs, outnum * outvalue)
    end

    local inputTotal = 0
    for _, v in ipairs(inputs) do inputTotal = inputTotal + v end

    local outputTotal = 0
    for _, v in ipairs(outputs) do outputTotal = outputTotal + v end

    local profit = outputTotal - inputTotal
    return tostring(profit)
end

return p