implements {{USN fleet totals}}

UsageEdit

{{#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,
	}