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