Module:BattleHonour explained

require('strict')local p = local data = mw.loadData('Module:BattleHonour/data')local getArgs = require('Module:Arguments').getArgs

function p.BattleHonourTable(frame) -- Convert key-value pairs into a list of pairs local pairsList = for code, values in pairs(data) do table.insert(pairsList,) end -- Sort the list based on the "Description" field of each pair table.sort(pairsList, function(a, b) return a[2].Name < b[2].Name end) -- Generate wiki table code for the sorted list local tableCode = "

-\n" tableCode = tableCode .. "! Code Name Image Description\n" for i, pair in ipairs(pairsList) do local code, values = pair[1], pair[2] local name = values.Name or "" local image = values.Image or "" local description = values.Description or "" local pagelink = values.Link or ""

tableCode = tableCode .. "

-\n" tableCode = tableCode .. "" .. code .. "\n" tableCode = tableCode .. "" .. name .. "\n" tableCode = tableCode .. "\n" tableCode = tableCode .. "" .. description .. "\n" end tableCode = tableCode .. "
" return tableCode end

function p.GetBattleHonour(BHCode, imgsize) local output = if not data[BHCode] then output = "Unknown: " .. BHCode .. "" output = output .. "

Please see the for help

".. "\n|-\n" else if string.len(data[BHCode].Link) < 1 then output = "" .. "\n|-\n" else output = output .. "" .. "\n|-\n" end end return outputend

local function makeRow(battleHonours, country, imgsize) local row = for i, bh in ipairs(battleHonours) do if bh ~= "" then -- local rowoutput= "\n|-\n" local rowoutput = p.GetBattleHonour(bh, imgsize) table.insert(row,string.format('|style="text-align: center"| %s',rowoutput)) end end return table.concat(row, "\n")end

function p.BHTable(frame) local templateArgs = getArgs(frame) local classes = if templateArgs.float then table.insert(classes, templateArgs.float) end local caption = templateArgs.caption or "Battle Honours" local title = templateArgs.Title or "Awarded" local country = templateArgs.country or "ZAR" local imgsize = templateArgs.size or "x20px" local battleHonours = for i = 1, 40 do -- 40 is the max number of params that will be examined. local bh = templateArgs[i] or "" if bh ~= "" then table.insert(battleHonours, bh) end end if templateArgs.list then battleHonours = mw.text.split(templateArgs.list, "%s*,%s*") end if templateArgs.unlinked then return table.concat(battleHonours, ", ") end local rows = table.insert(rows, string.format("|+ %s \n", caption)) table.insert(rows, string.format("|-\n!style=\"width:20%%; background:lightgrey; text-align:center;\"|%s\n|-", title)) table.insert(rows, makeRow(battleHonours, country, imgsize)) local outputTable = string.format('

', table.concat(classes, " "), templateArgs.borderColor or "#CF9C65", templateArgs.borderColor or "#CF9C65", table.concat(rows, "\n"))

return outputTableend

return p-- Initial Code by John Dovey (13 April 2023)