| Line 1: |
Line 1: |
| | + | local U = require('Module:Core') |
| | + | local ArtistData = require('Module:ArtistData') |
| | + | |
| | local Artist = {} | | local Artist = {} |
| | | | |
| | local artists = {} | | local artists = {} |
| | | | |
| − | local ArtistData = require('Module:ArtistData')
| + | function Artist:get(stat, name) |
| | + | return self:create(name)[stat]() |
| | + | end |
| | | | |
| − | function Artist:get(stat, name) | + | local function requireArtistModule(name) |
| − | return self:create(name)[stat]()
| + | local success, data = U.requireModule('Artist/' .. name) |
| | + | if not success then |
| | + | success, data = U.requireModule('Data/Artist/' .. name) |
| | + | end |
| | + | if not success then |
| | + | data = {_name = name} |
| | + | end |
| | + | return data |
| | end | | end |
| | | | |
| | function Artist:create(name) | | function Artist:create(name) |
| − | if name == nil then
| + | if not name then |
| − | return ArtistData()
| + | return ArtistData() |
| − | --check if we already have it
| + | end |
| − | elseif artists[name] then
| + | if not artists[name] then |
| − | return artists[name]
| + | artists[name] = ArtistData(requireArtistModule(name)) |
| − | else
| + | end |
| − | --Catch a failed require
| + | return artists[name] |
| − | local success, artist_table = pcall(function () return require(self:get_module(name)) end)
| |
| − | --require failed
| |
| − | if not success then
| |
| − | --create a ArtistData with what we have
| |
| − | artist_table = {_name = name}
| |
| − | end
| |
| − | local artist = ArtistData(artist_table)
| |
| − | artists[name] = artist
| |
| − | return artist
| |
| − | end
| |
| | end | | end |
| | | | |
| | function Artist:get_module(name) | | function Artist:get_module(name) |
| − | if name == nil then
| + | return name and string.format('Module:Data/Artist/%s', name) or nil |
| − | return nil
| |
| − | end
| |
| − | return mw.ustring.format('Module:Artist/%s', name)
| |
| | end | | end |
| | | | |
| | function Artist:extend(data) | | function Artist:extend(data) |
| − | data = data or {}
| + | data = data or {} |
| − | setmetatable(data, data)
| + | setmetatable(data, data) |
| − | data.__index = self
| + | data.__index = self |
| − | data.__call = self.__call
| + | data.__call = self.__call |
| − | return data
| + | return data |
| | end | | end |
| | | | |