Documentation for this module may be created at Module:NanaminFleet/doc
local BaseTable = require('Module:BaseTable')
local Ship = require('Module:Ship')
local ShipCardKai = require('Module:ShipCardKai')
local Equipment = require('Module:Equipment')
local Formatting = require('Module:Formatting')
local format = require('Module:StringInterpolation').format
local NanaminFleet = BaseTable({
_item_class = Ship,
_equip_class = Equipment,
_equip_bg = "whitesmoke",
_header_template = nil,
_column_cell_templates = {
ship = [[| rowspan="4" style="background: transparent;" |${values.ship_card}]],
equips = [[| style="background: whitesmoke;" |${values.equips1}
|-
| style="background: whitesmoke;" |${values.equips2}
|-
| style="background: whitesmoke;" |${values.equips3}
|-
| style="background: whitesmoke;" |${values.equips4}]],
ship2 = [[| rowspan="4" style="background: transparent;" |${values.ship_card}]],
equips2 = [[| style="background: whitesmoke;" |${values.equips1}
|-
| style="background: whitesmoke;" |${values.equips2}
|-
| style="background: whitesmoke;" |${values.equips3}
|-
| style="background: whitesmoke;" |${values.equips4}]]
},
_columns = {
"ship",
"equips",
"ship2",
"equips2"
},
_blank = "blank.png",
_default_size = ShipCardKai._card_size
})
function NanaminFleet:create_table_prep()
self._size = self._args.image_size or self._default_size
end
function NanaminFleet:ship(row)
local value
if row[1] == false then
value = Formatting:format_image{self._blank, size = self._size}
else
value = ShipCardKai:card{ship = row[1], size = self._size, link = row[1]:link(), caption = row[1]:name()}
end
return {values = {ship_card = value}, bg_color = self._transparent, text_align = self._center_align}
end
function NanaminFleet:ship2(row)
row = {row[3], row[4]}
return self:ship(row)
end
function NanaminFleet:equips(row)
local value1 = "Lol"
local value2 = "Lol2"
local value3 = "Lol3"
local value4 = "Lol4"
return {values = {equips1 = value1, equips2 = value2, equips3 = value3, equips4 = value4}, bg_color = self._equip_bg, text_align = self._center_align}
end
function NanaminFleet:equips2(row)
return self:equips(row)
end
function NanaminFleet:process_item_key(item_key)
local split = mw.ustring.find(item_key, '/')
if split == nil then
return item_key
else
ship_name = mw.ustring.sub(item_key, 1, split - 1)
ship_suffix = mw.ustring.sub(item_key, split + 1, -1)
if ship_suffix == "Regular" then
ship_suffix = nil
end
return ship_name, ship_suffix
end
end
function NanaminFleet:create_items()
local count = 0
local row = {}
for index, item_key in ipairs(self._args) do
count = count + 1
local item
if item_key == "-" then
item = false
else
if mw.ustring.find(item_key, '/') then
item = self._item_class(self:process_item_key(item_key))
else
item = self._equip_class(self:process_item_key(item_key))
end
end
if count % 5 == 1 or count % 5 == 2 then
table.insert(row, item)
end
if count % 10 == 0 then
table.insert(self._items, row)
row = {}
end
end
end
function NanaminFleet:create_data_rows()
for _, item in ipairs(self._items) do
local row_values = {}
for _, column in ipairs(self._columns) do
row_values[column] = self[column](self, item)
row_values[column].rowspan = item.class ~= nil and 4 or 1
row_values[column].colspan = 1
end
table.insert(self._data_rows, row_values)
end
end
function NanaminFleet:create_header()
self._header = format(self._header_template, {})
end
return NanaminFleet