Module:DataPointItemListGenerator
From Liquipedia Commons Wiki
local Arguments = require('Module:Arguments')
local Array = require('Module:Array')
local Json = require('Module:Json')
local Logic = require('Module:Logic')
local Table = require('Module:Table')
local ItemList = {}
function ItemList.run(frame)
local args = Arguments.getArgs(frame)
assert(args.dataPointType, 'no dataPointType specified')
assert(args.conditions, 'no conditions specified')
local data = mw.ext.LiquipediaDB.lpdb('datapoint', {
conditions = '[[type::' .. args.dataPointType .. ']] AND ' .. args.conditions,
query = 'pagename, name',
order = 'pagename asc',
limit = 5000,
})
local elements = {}
local elements = Array.map(data, function(item)
return '[[' .. item.pagename .. '|' .. Logic.emptyOr(item.name, item.pagename:gsub('_', ' ')) .. ']]'
end)
local manualElements = Array.mapIndexes(function(index) return args[index] end)
if Logic.readBool(args.prependManualChildren) then
elements = Array.extend(manualElements, elements)
else
Array.extendWith(elements, manualElements)
end
if Logic.readBool(args.newVersion) then
return Json.stringify(Table.merge(args, elements))
end
return table.concat(Array.map(elements, function(element) return '* ' .. element .. '\n' end))
end
return ItemList