• 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:Equipment"

From Kancolle Wiki
Jump to navigation Jump to search
Line 18: Line 18:
 
local eq = U.find(EquipmentCollection, name, '_name')
 
local eq = U.find(EquipmentCollection, name, '_name')
 
local success2, equipment_table2
 
local success2, equipment_table2
if eq and eq._module then
+
if eq and (eq._module or eq._dev) then
success2, equipment_table2 = U.requireModule(eq._module)
+
success2, equipment_table2 = U.requireModule(eq._module or eq._dev and name .. '/Dev')
 
end
 
end
 
equipment_table = success2 and equipment_table2 or eq or { _name = name }
 
equipment_table = success2 and equipment_table2 or eq or { _name = name }
 
if eq and eq._module then
 
if eq and eq._module then
 
equipment_table._module = eq._module
 
equipment_table._module = eq._module
 +
end
 +
if eq and eq._dev then
 +
equipment_table._dev = eq._dev
 
end
 
end
 
end
 
end
Line 36: Line 39:
  
 
function Equipment:get_module(name)
 
function Equipment:get_module(name)
return name and mw.ustring.format('Module:%s', equipments[name] and equipments[name]._module or name) or nil
+
return name and mw.ustring.format(
 +
    'Module:%s',
 +
    equipments[name] and (equipments[name]._module or equipments[name]._dev and name .. '/Dev') or name
 +
    ) or nil
 
end
 
end
  

Revision as of 10:13, 9 December 2017

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

local U = require('Module:Utils')
local EquipmentData = require('Module:EquipmentData')
local EquipmentCollection = require('Module:Collection/Equipment')

local Equipment = {}

local equipments = {}

function Equipment:create(name)
	if not name then
		return EquipmentData()
	end
	if equipments[name] then
		return equipments[name]
	end
	local success, equipment_table = U.requireModule(name)
	if not success then
		local eq = U.find(EquipmentCollection, name, '_name')
		local success2, equipment_table2
		if eq and (eq._module or eq._dev) then
			success2, equipment_table2 = U.requireModule(eq._module or eq._dev and name .. '/Dev')
		end
		equipment_table = success2 and equipment_table2 or eq or { _name = name }
		if eq and eq._module then
			equipment_table._module = eq._module
		end
		if eq and eq._dev then
			equipment_table._dev = eq._dev
		end
	end
	local equipment = EquipmentData(equipment_table)
	equipments[name] = equipment
	return equipment
end

function Equipment:get(stat, name)
	return self:create(name)[stat]()
end

function Equipment:get_module(name)
	return name and mw.ustring.format(
	    'Module:%s',
	    equipments[name] and (equipments[name]._module or equipments[name]._dev and name .. '/Dev') or name
    ) or nil
end

function Equipment:extend(data)
	data = data or {}
	setmetatable(data, data)
	data.__index = self
	data.__call = self.__call
	return data
end

Equipment.__call = Equipment.create
setmetatable(Equipment, Equipment)

return Equipment