• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:EquipmentInfoKai"

From Kancolle Wiki
Jump to navigation Jump to search
com>Ckwng
com>Ckwng
Line 1: Line 1:
 +
local BaseData = require('Module:BaseData')
 
local Equipment = require('Module:Equipment')
 
local Equipment = require('Module:Equipment')
 +
local EquipmentCardKai = require('Module:EquipmentCardKai')
 
local Formatting = require('Module:Formatting')
 
local Formatting = require('Module:Formatting')
 
local format = require('Module:StringInterpolation').format
 
local format = require('Module:StringInterpolation').format
  
local EquipmentInfoKai = {
+
local EquipmentInfoKai = BaseData{
_template = [[{|class="typography-xl-output" style="border: 1px solid darkgray; width: 400px;"
+
_template = [[{|class="${table_class}" id="${table_id}" style="border: 1px solid darkgray; width: 400px; float: ${float};"
 
|-
 
|-
 
| colspan="2" style="position: relative; padding: 1px 40px; text-align: center; background-color: ${back};${extra_style};"|<div style="position: absolute; right: 5px;">${edit_link}</div>
 
| colspan="2" style="position: relative; padding: 1px 40px; text-align: center; background-color: ${back};${extra_style};"|<div style="position: absolute; right: 5px;">${edit_link}</div>
Line 38: Line 40:
 
_empty_card = "Empty equipment card slot.png",
 
_empty_card = "Empty equipment card slot.png",
 
_shown_ship_types = {
 
_shown_ship_types = {
2,
+
2, 3,
3,
+
21, 4,
--
+
5, 6,
21,
+
8, 9,
4,
+
10, 7,
--
+
11, 18,
5,
+
13, 14,
6,
+
20, 16,
--
+
17, 19,
8,
+
},
9,
+
_fields = {
--
+
"edit_link",
10,
+
"back",
7,
+
"name",
--
+
"localized_name",
11,
+
"alternative_names",
18,
+
"id",
--
+
"japanese_name",
13,
+
"icon",
14,
+
"eq_type",
--
+
"effects",
20,
+
"scrap",
16,
+
"image",
--
+
"compatibility_details",
17,
+
},
19,
 
}
 
 
}
 
}
  
function EquipmentInfoKai:edit_link(equipment_data_module)
+
function EquipmentInfoKai:Infobox(args)
return Formatting:format_edit_link(equipment_data_module, self._edit_link_text, self._equipment_data_documentation)
+
return self{
 +
_args = args,
 +
}:create_infobox()
 
end
 
end
  
function EquipmentInfoKai:back(equipment)
+
function EquipmentInfoKai:edit_link()
return Formatting:format_equipment_back(equipment:back())
+
self._vars.edit_link = Formatting:format_edit_link(self._equipment_data_module, self._edit_link_text, self._equipment_data_documentation)
 
end
 
end
  
function EquipmentInfoKai:extra_style(equipment)
+
function EquipmentInfoKai:back()
local back = equipment:back()
+
local back = self._equipment:back()
return Formatting:extra_style_background_image(false, back and back >= 4)
+
self._vars.back, self._vars.extra_style = Formatting:format_equipment_back(back), Formatting:extra_style_background_image(false, back and back >= 4)
 
end
 
end
  
function EquipmentInfoKai:name(equipment)
+
function EquipmentInfoKai:name()
return Formatting:format_link(equipment:link())
+
self._vars.name = Formatting:format_link(self._equipment:link())
 
end
 
end
  
function EquipmentInfoKai:localized_name(equipment)
+
function EquipmentInfoKai:localized_name()
local localized_name = equipment:localized_name()
+
local localized_name = self._equipment:localized_name()
 
if localized_name then
 
if localized_name then
return format{self._localized_name_template, localized_name = localized_name}
+
self._vars.localized_name = format{self._localized_name_template, localized_name = localized_name}
 +
else
 +
self._vars.localized_name = ""
 
end
 
end
return ""
 
 
end
 
end
  
function EquipmentInfoKai:alternative_names(equipment)
+
function EquipmentInfoKai:alternative_names()
 
local alternative_names = {}
 
local alternative_names = {}
local list_name = equipment:list_name()
+
local list_name = self._equipment:list_name()
local library_name = equipment:library_name()
+
local library_name = self._equipment:library_name()
local comparison_name = equipment:comparison_name()
+
local comparison_name = self._equipment:comparison_name()
 
if list_name then
 
if list_name then
local list_japanese_name = equipment:list_japanese_name()
+
local list_japanese_name = self._equipment:list_japanese_name()
local list_reading = equipment:list_reading()
+
local list_reading = self._equipment:list_reading()
 
if list_reading ~= false then
 
if list_reading ~= false then
 
list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading)))
 
list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading)))
 
end
 
end
local list_localized_name = equipment:list_localized_name()
+
local list_localized_name = self._equipment:list_localized_name()
 
if list_localized_name then
 
if list_localized_name then
 
list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name))
 
list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name))
Line 112: Line 115:
 
end
 
end
 
if library_name then
 
if library_name then
local library_japanese_name = equipment:library_japanese_name()
+
local library_japanese_name = self._equipment:library_japanese_name()
local library_reading = equipment:library_reading()
+
local library_reading = self._equipment:library_reading()
 
if library_reading ~= false then
 
if library_reading ~= false then
 
library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading)))
 
library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading)))
 
end
 
end
local library_localized_name = equipment:library_localized_name()
+
local library_localized_name = self._equipment:library_localized_name()
 
if library_localized_name then
 
if library_localized_name then
 
library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name))
 
library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name))
Line 126: Line 129:
 
end
 
end
 
if comparison_name then
 
if comparison_name then
local comparison_japanese_name = equipment:comparison_japanese_name()
+
local comparison_japanese_name = self._equipment:comparison_japanese_name()
local comparison_reading = equipment:comparison_reading()
+
local comparison_reading = self._equipment:comparison_reading()
 
if comparison_reading ~= false then
 
if comparison_reading ~= false then
 
comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading)))
 
comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading)))
 
end
 
end
local comparison_localized_name = equipment:comparison_localized_name()
+
local comparison_localized_name = self._equipment:comparison_localized_name()
 
if comparison_localized_name then
 
if comparison_localized_name then
 
comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name))
 
comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name))
Line 140: Line 143:
 
end
 
end
 
if #alternative_names == 0 then
 
if #alternative_names == 0 then
return ""
+
self._vars.alternative_names = ""
 +
else
 +
self._vars.alternative_names = format{self._alternative_names_template, names = table.concat(alternative_names, "<br/>")}
 
end
 
end
return format{self._alternative_names_template, names = table.concat(alternative_names, "<br/>")}
 
 
end
 
end
  
function EquipmentInfoKai:id(equipment)
+
function EquipmentInfoKai:id()
return Formatting:format_stat(equipment:id())
+
self._vars.id = Formatting:format_stat(self._equipment:id())
 
end
 
end
  
function EquipmentInfoKai:japanese_name(equipment)
+
function EquipmentInfoKai:japanese_name()
return tostring(Formatting:japanese_text(Formatting:format_stat(equipment:japanese_name()), Formatting:format_stat(equipment:reading())))
+
self._vars.japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(self._equipment:japanese_name()), Formatting:format_stat(self._equipment:reading())))
 
end
 
end
  
function EquipmentInfoKai:icon(equipment)
+
function EquipmentInfoKai:icon()
return Formatting:format_image{Formatting:format_equipment_icon(equipment:icon())}
+
self._vars.icon = Formatting:format_image{Formatting:format_equipment_icon(self._equipment:icon())}
 
end
 
end
  
function EquipmentInfoKai:eq_type(equipment)
+
function EquipmentInfoKai:eq_type()
return Formatting:tooltip(Formatting:format_equipment_type(equipment:type()), Formatting:format_equipment_rarity(equipment:rarity()))
+
self._vars.eq_type = Formatting:tooltip(Formatting:format_equipment_type(self._equipment:type()), Formatting:format_equipment_rarity(self._equipment:rarity()))
 
end
 
end
  
function EquipmentInfoKai:effects(equipment)
+
function EquipmentInfoKai:effects()
return Formatting:format_stat_bonuses{
+
self._vars.effects = Formatting:format_stat_bonuses{
firepower = equipment:firepower(),  
+
firepower = self._equipment:firepower(),  
bombing = equipment:bombing(),  
+
bombing = self._equipment:bombing(),  
torpedo = equipment:torpedo(),  
+
torpedo = self._equipment:torpedo(),  
aa = equipment:aa(),  
+
aa = self._equipment:aa(),  
armor = equipment:armor(),  
+
armor = self._equipment:armor(),  
asw = equipment:asw(),  
+
asw = self._equipment:asw(),  
shelling_accuracy = equipment:shelling_accuracy(),
+
shelling_accuracy = self._equipment:shelling_accuracy(),
torpedo_accuracy = equipment:torpedo_accuracy(),
+
torpedo_accuracy = self._equipment:torpedo_accuracy(),
evasion = equipment:evasion(),
+
evasion = self._equipment:evasion(),
los = equipment:los(),
+
los = self._equipment:los(),
speed = Formatting:format_speed(equipment:speed()),
+
speed = Formatting:format_speed(self._equipment:speed()),
luck = equipment:luck(),
+
luck = self._equipment:luck(),
range = Formatting:format_range(equipment:range()),
+
range = Formatting:format_range(self._equipment:range()),
special = equipment:special(),
+
special = self._equipment:special(),
 
}
 
}
 
end
 
end
  
function EquipmentInfoKai:scrap(equipment)
+
function EquipmentInfoKai:scrap()
return Formatting:format_resources(equipment:scrap())
+
self._vars.scrap = Formatting:format_resources(self._equipment:scrap())
 
end
 
end
  
function EquipmentInfoKai:card(equipment)
+
function EquipmentInfoKai:image()
local card = equipment:card()
+
local card = EquipmentCardKai{equipment = self._equipment}
 
if card == false then
 
if card == false then
 
card = self._empty_card
 
card = self._empty_card
 
end
 
end
local card_name = equipment:card_name()
+
local card_name = self._equipment:card_name()
 
if card_name then
 
if card_name then
 
local card_caption = {}
 
local card_caption = {}
local card_local = equipment:card_localized_name()
+
local card_local = self._equipment:card_localized_name()
 
if card_local then
 
if card_local then
 
table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local))
 
table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local))
Line 199: Line 203:
 
end
 
end
 
table.insert(card_caption, "/")
 
table.insert(card_caption, "/")
table.insert(card_caption, Formatting:format_stat_with_max(equipment:card_japanese_name(), equipment:card_reading()))
+
table.insert(card_caption, Formatting:format_stat_with_max(self._equipment:card_japanese_name(), self._equipment:card_reading()))
  
 
return Formatting:format_image{card,
 
return Formatting:format_image{card,
Line 205: Line 209:
 
}
 
}
 
end
 
end
return Formatting:format_image{card}
+
self._vars.card = Formatting:format_image{card}
 
end
 
end
  
function EquipmentInfoKai:compatibility_details(equipment)
+
function EquipmentInfoKai:compatibility_details()
 
local result = {}
 
local result = {}
 
for index, ship_type in ipairs(self._shown_ship_types) do
 
for index, ship_type in ipairs(self._shown_ship_types) do
Line 214: Line 218:
 
table.insert(result, self._row_starter)
 
table.insert(result, self._row_starter)
 
end
 
end
local compatibility, note = equipment:equippable(ship_type)
+
local compatibility, note = self._equipment:equippable(ship_type)
 
local ship_label = Formatting:format_ship_type(ship_type)
 
local ship_label = Formatting:format_ship_type(ship_type)
 
if note then
 
if note then
Line 224: Line 228:
 
end
 
end
  
function EquipmentInfoKai:Infobox(name)
+
function EquipmentInfoKai:create_item()
local equipment = Equipment(name)
+
if self._args.name then
local equipment_data_module = Equipment:get_module(name)
+
self._equipment = Equipment(self._args.name, self._args.model)
 +
else
 +
self._equipment = Equipment(self._args[1])
 +
end
 +
end
 +
 
 +
function EquipmentInfoKai:get_module()
 +
self._equipment_data_module = Equipment:get_module(self._args.name or self._args[1])
 +
end
  
return format{self._template,
+
function EquipmentInfoKai:create_infobox_prep()
edit_link = self:edit_link(equipment_data_module),
+
local table_classes = {"typography-xl-optout", "infobox"}
back = self:back(equipment),
+
if self._args.classes then
extra_style = self:extra_style(equipment),
+
table.insert(table_classes, self._args.classes)
name = self:name(equipment),
+
end
localized_name = self:localized_name(equipment),
+
local collapsible = self._args.collapsible
alternative_names = self:alternative_names(equipment),
+
if collapsible then
id = self:id(equipment),
+
table.insert(table_classes, "mw-collapsible")
japanese_name = self:japanese_name(equipment),
+
table.insert(table_classes, "mw-collapsed")
icon = self:icon(equipment),
+
end
eq_type = self:eq_type(equipment),
+
self._vars.table_class = table.concat(table_classes, " ")
effects = self:effects(equipment),
+
self._vars.table_id = collapsible and collapsible ~= "true" and ("mw-customcollapsible-" .. collapsible) or ""
scrap = self:scrap(equipment),
+
self._vars.float = self._args.float or "none"
card = self:card(equipment),
+
end
compatibility_details = self:compatibility_details(equipment),
+
 
}
+
function EquipmentInfoKai:format_template()
 +
for _, field in ipairs(self._fields) do
 +
self[field](self)
 +
end
 +
return format(self._template, self._vars)
 +
end
 +
 
 +
function EquipmentInfoKai:add_fields()
 +
return
 +
end
 +
 
 +
function EquipmentInfoKai:create_infobox()
 +
self:add_fields()
 +
self:create_item()
 +
self:get_module()
 +
self:create_infobox_prep()
 +
return self:format_template()
 
end
 
end
  
 
return EquipmentInfoKai
 
return EquipmentInfoKai

Revision as of 23:42, 14 June 2015

Documentation for this module may be created at Module:EquipmentInfoKai/doc

local BaseData = require('Module:BaseData')
local Equipment = require('Module:Equipment')
local EquipmentCardKai = require('Module:EquipmentCardKai')
local Formatting = require('Module:Formatting')
local format = require('Module:StringInterpolation').format

local EquipmentInfoKai = BaseData{
	_template = [[{|class="${table_class}" id="${table_id}" style="border: 1px solid darkgray; width: 400px; float: ${float};"
|-
| colspan="2" style="position: relative; padding: 1px 40px; text-align: center; background-color: ${back};${extra_style};"|<div style="position: absolute; right: 5px;">${edit_link}</div>
<p style="font-size: 25px">'''${name}'''</p>${localized_name}
<p style="font-size: 20px">'''No.${id} ${japanese_name}'''</p>
|-
| colspan="2" style="text-align: center; background-color: whitesmoke;"|
'''${icon} ${eq_type}'''

<b>Effects: ${effects}</b>

'''Scrap value: ${scrap}'''${alternative_names}
|- 
| colspan="2" style="text-align: center;" | ${card}
|-
| colspan="2" style="text-align: center; background-color: LightSkyBlue;" | '''Refittable Class'''
${compatibility_details}
|}]],
	_row_starter = "|-",
	_compatibility_cell = [[| style="width: 200px; text-align: center; background-color: ${bg_color};" | ${label}]],
	_localized_name_template = "<p>''${localized_name}''</p>",
	_alternative_names_template = [[ 
|-
| colspan="2" style="text-align: center; padding: 0px;" | <div class="mw-collapsible mw-collapsed" style="background-color: lightgrey; margin: 0px;">''Alternate names''<div class="mw-collapsible-content" style="background-color: whitesmoke;">
${names}
</div></div>]],
	_alternative_name_template = [[<div style="display: inline-block; vertical-align: middle;"><small>''${label}:''</small></div> <div style="display: inline-block; vertical-align: middle;"><small>''${name}<br />${japanese_name}''</small></div>]],
	_library_name_label = "Library name",
	_list_name_label = "List name",
	_comparison_name_label = "Comparison name",
	_equipment_data_documentation = "Template:EquipmentDataDocumentation/EditIntro",
	_edit_link_text = "Edit",
	_empty_card = "Empty equipment card slot.png",
	_shown_ship_types = {
		2, 3,
		21, 4,
		5, 6,
		8, 9,
		10, 7,
		11, 18,
		13, 14,
		20, 16,
		17, 19,
	},
	_fields = {
		"edit_link",
		"back",
		"name",
		"localized_name",
		"alternative_names",
		"id",
		"japanese_name",
		"icon",
		"eq_type",
		"effects",
		"scrap",
		"image",
		"compatibility_details",
	},
}

function EquipmentInfoKai:Infobox(args)
	return self{
		_args = args,
	}:create_infobox()
end

function EquipmentInfoKai:edit_link()
	self._vars.edit_link = Formatting:format_edit_link(self._equipment_data_module, self._edit_link_text, self._equipment_data_documentation)
end

function EquipmentInfoKai:back()
	local back = self._equipment:back()
	self._vars.back, self._vars.extra_style = Formatting:format_equipment_back(back), Formatting:extra_style_background_image(false, back and back >= 4)
end

function EquipmentInfoKai:name()
	self._vars.name = Formatting:format_link(self._equipment:link())
end

function EquipmentInfoKai:localized_name()
	local localized_name = self._equipment:localized_name()
	if localized_name then
		self._vars.localized_name = format{self._localized_name_template, localized_name = localized_name}
	else
		self._vars.localized_name = ""
	end
end

function EquipmentInfoKai:alternative_names()
	local alternative_names = {}
	local list_name = self._equipment:list_name()
	local library_name = self._equipment:library_name()
	local comparison_name = self._equipment:comparison_name()
	if list_name then
		local list_japanese_name = self._equipment:list_japanese_name()
		local list_reading = self._equipment:list_reading()
		if list_reading ~= false then
			list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading)))
		end
		local list_localized_name = self._equipment:list_localized_name()
		if list_localized_name then
			list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name))
		else
			list_name = Formatting:format_stat(list_name)
		end
		table.insert(alternative_names, format{self._alternative_name_template, label = self._list_name_label, name = list_name, japanese_name = list_japanese_name})
	end
	if library_name then
		local library_japanese_name = self._equipment:library_japanese_name()
		local library_reading = self._equipment:library_reading()
		if library_reading ~= false then
			library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading)))
		end
		local library_localized_name = self._equipment:library_localized_name()
		if library_localized_name then
			library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name))
		else
			library_name = Formatting:format_stat(library_name)
		end
		table.insert(alternative_names, format{self._alternative_name_template, label = self._library_name_label, name = library_name, japanese_name = library_japanese_name})
	end
	if comparison_name then
		local comparison_japanese_name = self._equipment:comparison_japanese_name()
		local comparison_reading = self._equipment:comparison_reading()
		if comparison_reading ~= false then
			comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading)))
		end
		local comparison_localized_name = self._equipment:comparison_localized_name()
		if comparison_localized_name then
			comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name))
		else
			comparison_name = Formatting:format_stat(comparison_name)
		end
		table.insert(alternative_names, format{self._alternative_name_template, label = self._comparison_name_label, name = comparison_name, japanese_name = comparison_japanese_name})
	end
	if #alternative_names == 0 then
		self._vars.alternative_names = ""
	else
		self._vars.alternative_names = format{self._alternative_names_template, names = table.concat(alternative_names, "<br/>")}
	end
end

function EquipmentInfoKai:id()
	self._vars.id = Formatting:format_stat(self._equipment:id())
end

function EquipmentInfoKai:japanese_name()
	self._vars.japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(self._equipment:japanese_name()), Formatting:format_stat(self._equipment:reading())))
end

function EquipmentInfoKai:icon()
	self._vars.icon = Formatting:format_image{Formatting:format_equipment_icon(self._equipment:icon())}
end

function EquipmentInfoKai:eq_type()
	self._vars.eq_type = Formatting:tooltip(Formatting:format_equipment_type(self._equipment:type()), Formatting:format_equipment_rarity(self._equipment:rarity()))
end

function EquipmentInfoKai:effects()
	self._vars.effects = Formatting:format_stat_bonuses{
		firepower = self._equipment:firepower(), 
		bombing = self._equipment:bombing(), 
		torpedo = self._equipment:torpedo(), 
		aa = self._equipment:aa(), 
		armor = self._equipment:armor(), 
		asw = self._equipment:asw(), 
		shelling_accuracy = self._equipment:shelling_accuracy(),
		torpedo_accuracy = self._equipment:torpedo_accuracy(),
		evasion = self._equipment:evasion(),
		los = self._equipment:los(),
		speed = Formatting:format_speed(self._equipment:speed()),
		luck = self._equipment:luck(),
		range = Formatting:format_range(self._equipment:range()),
		special = self._equipment:special(),
	}
end

function EquipmentInfoKai:scrap()
	self._vars.scrap = Formatting:format_resources(self._equipment:scrap())
end

function EquipmentInfoKai:image()
	local card = EquipmentCardKai{equipment = self._equipment}
	if card == false then
		card = self._empty_card
	end
	local card_name = self._equipment:card_name()
	if card_name then
		local card_caption = {}
		local card_local = self._equipment:card_localized_name()
		if card_local then
			table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local))
		else
			table.insert(card_caption, card_name)
		end
		table.insert(card_caption, "/")
		table.insert(card_caption, Formatting:format_stat_with_max(self._equipment:card_japanese_name(), self._equipment:card_reading()))

		return Formatting:format_image{card,
			caption = table.concat(card_caption)
		}
	end
	self._vars.card = Formatting:format_image{card}
end

function EquipmentInfoKai:compatibility_details()
	local result = {}
	for index, ship_type in ipairs(self._shown_ship_types) do
		if index % 2 == 1 then
			table.insert(result, self._row_starter)
		end
		local compatibility, note = self._equipment:equippable(ship_type)
		local ship_label = Formatting:format_ship_type(ship_type)
		if note then
			ship_label = Formatting:tooltip(ship_label, note)
		end
		table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility(compatibility), label = ship_label})
	end
	return table.concat(result, "\n")
end

function EquipmentInfoKai:create_item()
	if self._args.name then
		self._equipment = Equipment(self._args.name, self._args.model)
	else
		self._equipment = Equipment(self._args[1])
	end
end

function EquipmentInfoKai:get_module()
	self._equipment_data_module = Equipment:get_module(self._args.name or self._args[1])
end

function EquipmentInfoKai:create_infobox_prep()
	local table_classes = {"typography-xl-optout", "infobox"}
	if self._args.classes then
		table.insert(table_classes, self._args.classes)
	end
	local collapsible = self._args.collapsible
	if collapsible then
		table.insert(table_classes, "mw-collapsible")
		table.insert(table_classes, "mw-collapsed")
	end
	self._vars.table_class = table.concat(table_classes, " ")
	self._vars.table_id = collapsible and collapsible ~= "true" and ("mw-customcollapsible-" .. collapsible) or ""
	self._vars.float = self._args.float or "none"
end

function EquipmentInfoKai:format_template()
	for _, field in ipairs(self._fields) do
		self[field](self)
	end
	return format(self._template, self._vars)
end

function EquipmentInfoKai:add_fields()
	return
end

function EquipmentInfoKai:create_infobox()
	self:add_fields()
	self:create_item()
	self:get_module()
	self:create_infobox_prep()
	return self:format_template()
end

return EquipmentInfoKai