Module:CargoQuery

De ARK: Survival Evolved Wiki
Aller à : navigation, rechercher

Ce module vous permet de contourner l'erreur |no html qu'a le Cargo en évitant |format=template.

Pour l'utiliser, préfacez l'argument de la requête avec q?. Même si vous n'utilisez qu'une table, utilisez |q?tables=. Vous pourrez spécifier en plus |template=, |intro=, |outro=, |delimiter=, et |default=.

Utilisez les noms Lua (Lua names) pour tous les paramètres de la requête, comme |q?join=, |q?groupBy, etc.

Pour simplifier le code, tous les arguments (args) nommés doivent être Oui (Yes), ce que vous n'aurez pas à spécifier.

Contrairement au |format=template, cet emballage (wrapper) ne renommera PAS les paramètres avec des soulignements (underscore, tiret du 8) mais utilisera des espaces à la place.

Paramètres & Invocation

{{#invoke:CargoQuery|main
|q?tables= 	correspond à la ou les tables
|q?join= 	correspond à joindre
|q?fields= 	correspond à champs
|q?where= 	correspond à où
|q?groupBy= 	correspond à grouper par
|q?having= 	correspond à obtenir
|q?orderBy= 	correspond à ranger par
|q?limit= 	correspond à limite
|template=
|intro=
|outro=
|delimiter=
|default=
}}

Dépendances


local p = {}
function p.main(frame)
	if frame == mw.getCurrentFrame() then
		args = require('Module:ProcessArgs').merge(true)
	else
		frame = mw.getCurrentFrame()
	end
	
	local query = {}
	for k, v in pairs(args) do
		if string.sub(k, 0, 2) == 'q?' then
			query[string.sub(k, 3)] = v
		end
	end
	
	local result = mw.ext.cargo.query(query.tables, query.fields, query)
	if not next(result) then
		return frame:preprocess(args.default or '')
	end
	local tbl = {}
	for _, row in ipairs(result) do
		tbl[#tbl+1] = frame:expandTemplate{ title = args.template, args = row }
	end
	local intro = frame:preprocess(args.intro or '')
	local outro = frame:preprocess(args.outro or '')
	return intro .. table.concat(tbl,args.delimiter or '') .. outro
	
end
return p