Documentation for this module may be created at Module:EntityListAbstract/doc
local util_args = require('Module:ArgsUtil')
local util_html = require("Module:HtmlUtil")
local util_map = require('Module:MapUtil')
local util_table = require("Module:TableUtil")
local util_text = require("Module:TextUtil")
local util_vars = require("Module:VarsUtil")
local i18n = require("Module:I18nUtil")
local lang = mw.getLanguage('en')
local LCS = require('Module:LuaClassSystem')
local p = LCS.class()
local h = {}
p.Entity = nil
function p:init(str, sep, opts)
sep = sep or '%s*,%s*'
local strs = util_text.split(str, sep)
self.objs = self:castEntities(strs, opts)
end
function p:castEntities(strs, opts)
if not self.Entity then
error('Missing self.Entity, cannot cast')
end
local ret = {}
for _, str in ipairs(strs) do
ret[#ret+1] = self.Entity(str, opts)
end
return ret
end
function p.__ipairs(tbl)
local function stateless_iter(tbl, i)
-- Implement your own index, value selection logic
i = i + 1
local val = tbl.objs[i]
if val ~= nil then return i, val end
end
-- return iterator function, table, and starting point
return stateless_iter, tbl, 0
end
function p:tostring()
if self.objs then
return util_table.concat(self, '/', tostring)
end
return 'Attempting to tostring something we cannot'
end
function p:names(length, sep, opts)
local tbl = {}
for _, obj in ipairs(self) do
tbl[#tbl+1] = obj:name(length, opts)
end
return util_table.concat(tbl, sep)
end
function p:linked(length, sep, opts)
local tbl = {}
for _, obj in ipairs(self) do
tbl[#tbl+1] = obj:linked(obj, length, opts)
end
return util_table.concat(tbl, sep)
end
function p:flairs(length, sep, opts)
local tbl = {}
for _, obj in ipairs(self) do
tbl[#tbl+1] = obj:name(obj, length, opts)
end
return util_table.concat(tbl, sep)
end
function p:flairslinked(length, sep, opts)
local tbl = {}
for _, obj in ipairs(self) do
tbl[#tbl+1] = obj:flairlinked(obj, length, opts)
end
return util_table.concat(tbl, sep)
end
function p:images(sep, opts)
local tbl = {}
for _, obj in ipairs(self) do
tbl[#tbl+1] = obj:image(opts)
end
return util_table.concat(tbl, sep)
end
function p:imageslinked(sep, opts)
local tbl = {}
for _, obj in ipairs(self) do
tbl[#tbl+1] = obj:imagelinked(opts)
end
return util_table.concat(tbl, sep)
end
return p