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 |
| | | |