1,043
edits
m (quick reformat pass) |
m (further reformatting) |
||
Line 1: | Line 1: | ||
local | local EncounterTable = {} | ||
function | --# Requires | ||
local ProcessArgs = require'Module:ProcessArgs' | |||
local TextUtility = require'Module:Text Utility' | |||
--# Interface | |||
function EncounterTable.splitEncounterTableArgs(row) | |||
local TABLE_ARGS = {'table', 'item', 'quantity', 'weight'} | local TABLE_ARGS = {'table', 'item', 'quantity', 'weight'} | ||
return | return TextUtility.splitArgs(row, TABLE_ARGS) | ||
end | end | ||
function | function EncounterTable.start(frame) | ||
local args = | local args = ProcessArgs.merge(true) | ||
local tblName = args.name or '' | local tblName = args.name or '' | ||
local pick = args.roll or 'once' | local pick = args.roll or 'once' | ||
Line 17: | Line 22: | ||
for i, row in ipairs(args) do | for i, row in ipairs(args) do | ||
local newrow = | local newrow = EncounterTable.splitEncounterTableArgs(row) | ||
result[i] = newrow | result[i] = newrow | ||
totalWeight = totalWeight + tonumber(newrow.weight) | totalWeight = totalWeight + tonumber(newrow.weight) | ||
Line 72: | Line 77: | ||
end | end | ||
return | return EncounterTable.formatTable(finalTable) | ||
end | end | ||
function | function EncounterTable.formatTable(final) | ||
local TABLE_HEADER = '<tr><th>Item</th><th>Quantity</th><th>Weight</th><th>Chance</th></tr>' | local TABLE_HEADER = '<tr><th>Item</th><th>Quantity</th><th>Weight</th><th>Chance</th></tr>' | ||
local | local tableRows = '' | ||
for _, | for _, entry in ipairs(final) do | ||
tableRows = tableRows .. ('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>'):format(entry.item, entry.quantity, entry.weight, entry.chance) | |||
end | end | ||
return '<table class="wikitable sortable"> | return ('<table class="wikitable sortable">%s%s</table>'):format(TABLE_HEADER, tableRows) | ||
end | end | ||
return | return EncounterTable |