Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Humanipedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:USN fleet totals
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
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 local get_args = require ('Module:Arguments').getArgs; --[[--------------------------< 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}} retire β number of ships to be decommissioned or taken out of service -- {{USN fleet totals|retire}} retire-year β planned retirement year farthest in the future -- {{USN fleet totals|retire-year}} <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 construction and on-order ships return round (data.planned_total); -- round to nearest multiple of 5 elseif 'retire' == frame.args[1] then -- ships to be decommissioned or taken out of service return round (data.retirements_total); -- round to nearest multiple of 5 elseif 'retire-year' == frame.args[1] then return data.retirements_year_max; else -- {{{1}}} is anything else return data.fleet_totals_str; -- return the detailed fleet totals end end --[[--------------------------< _ D E C O M _ E O S _ C O M M O N >-------------------------------------------- common function to implement {{decommission}} and {{end of service}} templates ]] local function _decom_eos_common (args_t, phrases_t, template_name) local out_t = {}; if phrases_t[args_t[1]] then -- is keyword valid? table.insert (out_t, phrases_t[args_t[1]]); -- yes, get the associated string elseif args_t[1] then -- no, but not nil so emit appropriate error message return '<span style="color:#d33"><kbd>{{[[Template:' .. template_name .. '|' .. template_name ..']]}}</kbd>: error: unknown keyword: ' .. args_t[1] .. '</span>'; else -- missing keyword so emit error message return '<span style="color:#d33"><kbd>{{[[Template:' .. template_name .. '|' .. template_name ..']]}}</kbd>: error: missing keyword</span>' end if args_t[2] then -- did we get this optional parameter? local year = mw.text.trim (args_t[2]):match ('^%d%d%d%d$'); -- attempt to get a four digit year if year then -- did we find a 'year'? TODO: validate? must be this or a future year? never in the past? table.insert (out_t, year); -- add the year to the output else -- here when a four-digit 'year' not found return '<span style="color:#d33"><kbd>{{[[Template:' .. template_name .. '|' .. template_name ..']]}}</kbd>: error: invalid year</span>'; end end return table.concat (out_t, ' '); -- assemble into a big string and done end --[[--------------------------< D E C O M M I S S I O N >------------------------------------------------------ implements {{decommission}} Takes two positional parameters: {{{1}}} β (required) one of two keywords that cause the template to return an appropriate phrase; phrases are defined in ~/data. The keywords are 'scheduled' and 'proposed' {{{2}}} β (optional) year when decommissioning is expected to occur ]] local function decommission (frame) local args_t = get_args (frame); -- get parameters from the template into a local table return _decom_eos_common (args_t, data.decommission_t, 'decommission'); -- call common function to error check the inputs and return the rendered string end --[[--------------------------< E N D _ O F _ S E R V I C E >-------------------------------------------------- implements {{end of service}} Takes two positional parameters: {{{1}}} β (required) one of two keywords that cause the template to return an appropriate phrase; phrases are defined in ~/data. The keywords are 'scheduled' and 'proposed' {{{2}}} β (optional) year when end of service is expected to occur ]] local function end_of_service (frame) local args_t = get_args (frame); -- get parameters from the template into a local table return _decom_eos_common (args_t, data.end_of_service_t, 'end of service'); -- call common function to error check the inputs and return the rendered string end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { USN_fleet_totals = USN_fleet_totals, decommission = decommission, end_of_service = end_of_service, }
Summary:
Please note that all contributions to Humanipedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Humanipedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Sandbox other
(
edit
)
Template:Template link expanded
(
edit
)
Template:Tlx
(
edit
)
Module:Arguments
(
edit
)
Module:String
(
edit
)
Module:Template link general
(
edit
)
Module:USN fleet totals/doc
(
edit
)