Line 1:
Line 1:
+
local U = require('Module:Utils')
+
local EquipmentData = require('Module:EquipmentData')
+
local EquipmentCollection = require('Module:Collection/Equipment')
+
local Equipment = {}
local Equipment = {}
local equipments = {}
local equipments = {}
−
−
local U = require('Module:Utils')
−
local EquipmentData = require('Module:EquipmentData')
−
−
function Equipment:get(stat, name)
−
return self:create(name)[stat]()
−
end
function Equipment:create(name)
function Equipment:create(name)
−
if name == nil then
+
if not name then
return EquipmentData()
return EquipmentData()
−
--check if we already have it
+
end
−
elseif equipments[name] then
+
if equipments[name] then
return equipments[name]
return equipments[name]
−
else
+
end
−
--Catch a failed require
+
local success, equipment_table = U.requireModule(name)
−
local success, equipment_table = pcall(function () return require(mw.ustring.format('Module:%s', name)) end)
+
if not success then
−
--require failed, equipment_table can be true on a wikia bug (Ticket 356218)
+
local eq = U.find(EquipmentCollection, name, '_name')
−
if not success or equipment_table == true then
+
local success2, equipment_table2
−
--create a EquipmentData with what we have
+
if eq and eq._module then
−
local eq = U.ifindBy(require('Module:Collection/Equipment'), function (e) return e._name == name or e.__name == name end)
+
success2, equipment_table2 = U.requireModule(eq._module)
−
if eq and eq.__name then
−
eq._name = eq.__name
−
end
−
equipment_table = eq or { _name = name }
end
end
−
local equipment = EquipmentData(equipment_table)
+
equipment_table = success2 and equipment_table2 or eq or { _name = name }
−
equipments[name] = equipment
−
return equipment
end
end
+
local equipment = EquipmentData(equipment_table)
+
equipments[name] = equipment
+
return equipment
+
end
+
+
function Equipment:get(stat, name)
+
return self:create(name)[stat]()
end
end
function Equipment:get_module(name)
function Equipment:get_module(name)
−
if name == nil then
+
return name and mw.ustring.format('Module:%s', name) or nil
−
return nil
−
end
−
return mw.ustring.format('Module:%s', name)
end
end