implements {{USN fleet totals}}
{{#invoke:USN fleet totals|USN_fleet_totals|{{{1|}}}}}
local data = mw.loadData ('Module:USN fleet totals/data'); -- get the detailed list of ship types and their counts, the grand total of active and reserve ships, and the total planned ships
--[[--------------------------< R O U N D >--------------------------------------------------------------------
rounds <count> to nearest multiple of 5.
]]
local function round (count)
if 0 == count % 5 then
return count; -- <count> is xx0, xx5 so return unmolested
elseif 2.5 > (count % 5) then
return count - (count % 5); -- <count> is xx1, xx2 so return xx0
else
return count + (5 - (count % 5)); -- <count> is xx3, xx4 so return xx5
end
end
--[[--------------------------< U S N _ F L E E T _ T O T A L S >----------------------------------------------
implements {{USN fleet totals}}
This function returns one of three values according to the text sting in {{{1}}} (frame.args[1]):
active – the 'grand total' (active and reserved fleets) rounded to the nearest multiple of 5 -- {{USN fleet totals|active}}
planned – the 'planned total' (ships under construction or on order) rounded to the nearest multiple of 5 -- {{USN fleet totals|planned}}
<anything or nothing> – the long string of fleet totals created by Module:USN fleet totals -- {{USN fleet totals}}
]]
local function USN_fleet_totals (frame)
if 'active' == frame.args[1] then -- number of active and reseved fleet ships
return round (data.grand_total); -- round to nearest multiple of 5
elseif 'planned' == frame.args[1] then -- under of under construction and on-order ships
return round (data.planned_total); -- round to nearest multiple of 5
else -- {{{1}}} is anything else
return data.fleet_totals_str; -- return the detailed fleet totals
end
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return
{
USN_fleet_totals = USN_fleet_totals,
}