Module:CargoQuery: Difference between revisions

887 bytes removed ,  17:46, 12 April 2021
m
Undo revision 45585 by Teamtoto (talk)
No edit summary
m (Undo revision 45585 by Teamtoto (talk))
Line 19: Line 19:
local format = args.format or nil
local format = args.format or nil
local query = {}
result = p.query(args)
for k, v in pairs(args) do
if string.sub(k, 0, 2) == 'q?' then
local key = string.sub(k, 3)
query[PARAM_LOOKUP[key] or key] = v
elseif PARAM_LOOKUP[k] then
query[PARAM_LOOKUP[k]] = v
else
query[k] = v
end
end
if args.one_to_many then
query.fields = query.fields .. ',' .. query.one_to_many
end
local result = mw.ext.cargo.query(query.tables, query.fields, query)
if #result == 0 then
return frame:preprocess(args.default or '')
end
if args.one_to_many then
result = h.groupOneToManyFields(result, h.getOneToManyTableFromArgs(args))
h.concatOneToManyFieldsInEachRow(result, args.one_to_many_sep or ',')
end
local tbl = {}
local tbl = {}
if format == "table" then
if format == "table" then
Line 207: Line 185:
local splitargs = {}
local splitargs = {}
for a, b in ipairs(args) do
for a, b in ipairs(args) do
local var = {}
    splitargs[a] = util_args.splitNamedArgs(frame:preprocess(b), '%s*' .. metasep .. '%s*')
for k, v in pairs(util_args.splitNamedArgs(frame:preprocess(b), '%s*' .. metasep .. '%s*')) do
if string.sub(k, 0, 2) == 'q?' then
local key = string.sub(k, 3)
var[PARAM_LOOKUP[key] or key] = v
elseif PARAM_LOOKUP[k] then
var[PARAM_LOOKUP[k]] = v
else
var[k] = v
end
end
splitargs[a] = var
end
end