Module:ShipCardListKai

local BaseTable = require('Module:BaseTable') local Formatting = require('Module:Formatting') local Ship = require('Module:Ship') local ShipCardKai = require('Module:ShipCardKai')

local ShipCardListKai = BaseTable{ _item_class = Ship, _row_starter = "", _header_template = nil, _cell = ${values.value}, _columns = { "one", "two", "three", "four", "five", },	_blank = "blank.png", _blank_size = "134px", }

function ShipCardListKai:card(ship) local value if ship == false then value = Formatting:format_image{self._blank, size = self._blank_size} else value = ShipCardKai:card{ship = ship, link = ship:link, caption = ship:name} end return {values = {value = value}, bg_color = self._transparent, text_align = self._center_align} end

function ShipCardListKai:one(row) return self:card(row[1]) end

function ShipCardListKai:two(row) return self:card(row[2]) end

function ShipCardListKai:three(row) return self:card(row[3]) end

function ShipCardListKai:four(row) return self:card(row[4]) end

function ShipCardListKai:five(row) return self:card(row[5]) end

function ShipCardListKai:start_rows self._rows = {} end

function ShipCardListKai:finish_rows return end

function ShipCardListKai:process_item_key(item_key) local split = mw.ustring.find(item_key, '/') local ship_base_name, ship_suffix if split == nil then ship_base_name = item_key else ship_base_name = mw.ustring.sub(item_key, 1, split - 1) ship_suffix = mw.ustring.sub(item_key, split + 1, -1) end return ship_base_name, ship_suffix end

function ShipCardListKai:create_items local count = 0 local row = {} for index, item_key in ipairs(self._args) do if mw.ustring.sub(item_key, 1, 1) == "!" then local filled = #row if filled ~= 0 then for i=1, 5 - filled do					table.insert(row, false) end table.insert(self._items, row) row = {} for i=1, filled do					table.insert(row, false) end end table.insert(self._items, mw.ustring.sub(item_key, 2)) else count = count + 1 local item = self._item_class(self:process_item_key(item_key)) table.insert(row, item) if count % 5 == 0 then table.insert(self._items, row) row = {} end end end if #row > 0 then for i=1, 5 - #row do			table.insert(row, false) end table.insert(self._items, row) end end

function ShipCardListKai:create_data_rows for _, item in ipairs(self._items) do		local row_values if type(item) == "string" then row_values = item else row_values = {} for _, column in ipairs(self._columns) do				row_values[column] = self[column](self, item) row_values[column].rowspan = 1 row_values[column].colspan = 1 end end table.insert(self._data_rows, row_values) end end

return ShipCardListKai