Jump to content

Module:Infobox ship/data

From Wikipedia, the free encyclopedia
--[[--------------------------< S T Y L E S >------------------------------------------------------------------

TODO: move these into templatestyles css

]]

local styles_t = {																-- these are variations on the styles from Module:WPMILHIST Infobox style
	mainbox = 'width:25.5em;border-spacing:2px;',
	history = 'background-color:#C3D6EF;text-align:center;vertical-align:middle;font-size:110%;';	-- infobox career history header
	country = 'height:30px;background-color:#B0C4DE;text-align:left;padding-left:2px;vertical-align:middle;font-size:110%;';	-- infobox career flag & country header
	general = 'height:30px;background-color:#C3D6EF;vertical-align:middle;font-size:110%;';			-- infobox characteristics & class overview headers
	}


--[[--------------------------< W A R N I N G   M E S S A G E >------------------------------------------------

These style cannot be moved to templatestyles css because mw.addWarning() does not understand apply css

]]

local warn_span_style = 'color:#d33';											-- these styles
local warn_code_style = 'color: inherit; background: inherit; border: none; padding: inherit;';
local warning_fmt_str = '<span style="%s"><code style="%s">&#123;{[[Template:%s|%s]]}}</code>: unknown parameter: <code style="%s">|%s=%s</code></span>';


--[[--------------------------< I N F O B O X   P A R A M E T E R S >------------------------------------------

These tables hold the names and define the rendering order of the label/data pairs in the associated infoboxen.
Each table is a sequence of sub-sequences where each subsequence holds
	[1] the parameter name
	[2] the rendered label for that parameter's value

]]

local infobox_career_params_t = {												-- table of parameters that are rendered in the same way
	{'ship_name', 'Name'},
	{'ship_namesake', 'Namesake'},
	{'ship_owner', 'Owner'},
	{'ship_operator', 'Operator'},
	{'ship_registry', 'Port of registry'},
	{'ship_route', 'Route'},
	{'ship_ordered', 'Ordered'},
	{'ship_awarded', 'Awarded'},
	{'ship_builder', 'Builder'},
	{'ship_original_cost', 'Cost'},
	{'ship_yard_number', 'Yard number'},
	{'ship_way_number', 'Way number'},
	{'ship_laid_down', 'Laid down'},
	{'ship_launched', 'Launched'},
	{'ship_sponsor', 'Sponsored by'},
	{'ship_christened', 'Christened'},
	{'ship_completed', 'Completed'},
	{'ship_acquired', 'Acquired'},
	{'ship_commissioned', 'Commissioned'},
	{'ship_recommissioned', 'Recommissioned'},
	{'ship_decommissioned', 'Decommissioned'},
	{'ship_maiden_voyage', 'Maiden voyage'},
	{'ship_in_service', 'In service'},
	{'ship_out_of_service', 'Out of service'},
	{'ship_renamed', 'Renamed'},
	{'ship_reclassified', 'Reclassified'},
	{'ship_refit', 'Refit'},
	{'ship_struck', 'Stricken'},
	{'ship_stricken', 'Stricken'},
	{'ship_reinstated', 'Reinstated'},
	{'ship_homeport', 'Homeport'},
	{'ship_identification', 'Identification'},
	{'ship_motto', 'Motto'},
	{'ship_nickname', 'Nickname(s)'},
	{'ship_honours', 'Honours and<br />awards'},								-- make these two the same index?
	{'ship_honors', 'Honors and<br />awards'},
	{'ship_captured', 'Captured'},
	{'ship_fate', 'Fate'},
	{'ship_status', 'Status'},
	{'ship_career_notes', 'Notes'},												-- renamed from ship_notes because duplicated name
	{'ship_badge', 'Badge'},
	}

local infobox_characteristics_params_t = {										-- table of parameters that are rendered in the same way
	{'ship_class', 'Class and type'},
	{'ship_type', 'Type'},
	{'ship_tonnage', 'Tonnage'},
	{'ship_displacement', 'Displacement'},
	{'ship_tons_burthen', 'Tons burthen'},
	{'ship_length', 'Length'},
	{'ship_beam', 'Beam'},
	{'ship_height', 'Height'},
	{'ship_draught', 'Draught'},												-- uk spelling
	{'ship_draft', 'Draft'},
	{'ship_depth', 'Depth'},
	{'ship_hold_depth', 'Depth of hold'},
	{'ship_decks', 'Decks'},
	{'ship_deck_clearance', 'Deck clearance'},
	{'ship_ramps', 'Ramps'},
	{'ship_ice_class', 'Ice class'},
	{'ship_power', 'Installed power'},
	{'ship_propulsion', 'Propulsion'},
	{'ship_sail_plan', 'Sail plan'},
	{'ship_speed', 'Speed'},
	{'ship_range', 'Range'},
	{'ship_endurance', 'Endurance'},
	{'ship_test_depth', 'Test depth'},
	{'ship_boats', 'Boats & landing <br /> craft carried'},
	{'ship_capacity', 'Capacity'},
	{'ship_troops', 'Troops'},
	{'ship_complement', 'Complement'},
	{'ship_crew', 'Crew'},
	{'ship_time_to_activate', 'Time to activate'},
	{'ship_sensors', 'Sensors and <br /> processing systems'},
	{'ship_EW', 'Electronic warfare <br /> & decoys'},
	{'ship_armament', 'Armament'},
	{'ship_armour', 'Armour'},													-- uk spelling
	{'ship_armor', 'Armor'},
	{'ship_aircraft', 'Aircraft carried'},
	{'ship_aircraft_facilities', 'Aviation facilities'},
	{'ship_characteristics_notes', 'Notes'},									-- renamed from ship_notes because duplicated name
	}

local infobox_class_overview_params_t = {										-- table of parameters that are rendered in the same way
	{'name', 'Name'},
	{'builders', 'Builders'},
	{'operators', 'Operators'},
	{'class_before', 'Preceded by'},
	{'class_after', 'Succeeded&nbsp;by'},
	{'subclasses', 'Subclasses'},
	{'cost', 'Cost'},
	{'built_range', 'Built'},
	{'in_service_range', 'In service'},
	{'in_commission_range', 'In commission'},
	{'total_ships_planned', 'Planned'},
	{'total_ships_on_order', 'On order'},
	{'total_ships_building', 'Building'},
	{'total_ships_completed', 'Completed'},
	{'total_ships_cancelled', 'Cancelled'},										-- uk spelling
	{'total_ships_canceled', 'Canceled'},
	{'total_ships_active', 'Active'},
	{'total_ships_laid_up', 'Laid up'},
	{'total_ships_lost', 'Lost'},
	{'total_ships_retired', 'Retired'},
	{'total_ships_scrapped', 'Scrapped'},
	{'total_ships_preserved', 'Preserved'},
	}

local infobox_ship_service_record_params_t = {									-- table of parameters that are rendered in the same way
	{'partof', 'Part of'},
	{'codes', 'Identification codes'},
	{'commanders', 'Commanders'},
	{'operations', 'Operations'},
	{'victories', 'Victories'},
	{'awards', 'Awards'},
	}


--[[--------------------------< K N O W N   P A R A M E T E R   T A B L E S >----------------------------------

These tables for detecting unknown parameters

]]

local known_infobox_ship_params_t = {											-- all parameters known to {{Infox ship}}
	['data#'] = true,															-- these native to infobox ship
	['label#'] = true,
	['section#'] = true,

	display_title = true,														-- these native to infobox_ship_begin()
	infobox_caption = true,
	sclass = true,
	showerrs = true,
	}

local known_infobox_ship_image_params_t = {										-- all parameters known to {{Infox ship/image}}
	caption = true,
	image = true,
	image_alt = true,
	image_size = true,
	image_caption = true,
	}

local known_infobox_ship_career_params_t = {									-- non-line-item parameters known to {{Infox ship/career}}
	child = true,																-- |child= may go away
	hide_header = true,
	ship_country = true,
	ship_flag = true,
	}
	
local known_infobox_ship_characteristics_params_t = {							-- non-line-item parameters known to {{Infox ship/characteristics}}
	child = true,																-- |child= may go away
	header_caption = true,
	hide_header = true,
	}
	
local known_infobox_ship_class_overview_params_t = {							-- non-line-item parameters known to {{Infox ship/class}}
	child = true,																-- |child= may go away
	hide_header = true,
	}
	
local known_infobox_ship_service_record_params_t = {							-- non-line-item parameters known to {{Infox ship/service record}}
	child = true,																-- |child= may go away
	hide_header = true,
	label = true,
	}


for _, tables_t in ipairs (
	{																			-- this table maps line-item tables with known parameter tables
	{infobox_career_params_t, known_infobox_ship_career_params_t},
	{infobox_characteristics_params_t, known_infobox_ship_characteristics_params_t},
	{infobox_class_overview_params_t, known_infobox_ship_class_overview_params_t},
	{infobox_ship_service_record_params_t, known_infobox_ship_service_record_params_t},
	}) do																		-- now fill known parameter tables from line-item tables
		for _, line_t in ipairs (tables_t[1]) do								-- <line_t> is sequence of parameter name [1] and displayed label [2]
			tables_t[2][line_t[1]] = true;										-- known-parameters table gets parameter name set to boolean true
		end
end


--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]

return
	{
	styles_t = styles_t,														-- TODO: replace with styles.css
	
	infobox_career_params_t = infobox_career_params_t,							-- infobox ship line items
	infobox_characteristics_params_t = infobox_characteristics_params_t,
	infobox_class_overview_params_t = infobox_class_overview_params_t,
	infobox_ship_service_record_params_t = infobox_ship_service_record_params_t,
	
	warn_code_style = warn_code_style,											-- for preview warning messages
	warning_fmt_str = warning_fmt_str,
	warn_span_style = warn_span_style,

	known_infobox_ship_params_t = known_infobox_ship_params_t,					-- for detecting unknown parameters
	known_infobox_ship_image_params_t = known_infobox_ship_image_params_t,
	known_infobox_ship_career_params_t = known_infobox_ship_career_params_t,
	known_infobox_ship_characteristics_params_t = known_infobox_ship_characteristics_params_t,
	known_infobox_ship_class_overview_params_t = known_infobox_ship_class_overview_params_t,
	known_infobox_ship_service_record_params_t = known_infobox_ship_service_record_params_t
	}