Module:SaintMap
Jump to navigation
Jump to search
Documentation for this module may be created at Module:SaintMap/doc
local p = {}
function p.getMapData(frame)
local saintName = frame.args.saintName or frame:getParent().args.saintName
local result = {}
local queries = {
{field = 'SaintBirthCoordinates__full', label = 'SaintBirthPlace'},
{field = 'SaintDeathCoordinates__full', label = 'DeathPlace', offset = true},
{field = 'NotableCoordinates1__full', label = 'NotableLabel1'},
{field = 'NotableCoordinates2__full', label = 'NotableLabel2'},
{field = 'NotableCoordinates3__full', label = 'NotableLabel3'},
{field = 'NotableCoordinates4__full', label = 'NotableLabel4'}
}
for _, q in ipairs(queries) do
local query = '{{#cargo_query:tables=Saints|fields=' .. q.field .. '=Coordinates,' .. q.label .. '=Label|where=SaintName="' .. saintName .. '" AND ' .. q.field .. ' IS NOT NULL AND ' .. q.label .. ' IS NOT NULL|format=template|template=SaintMapPoint|default=}}'
local queryResult = frame:preprocess(query)
if queryResult and queryResult ~= '' then
if q.offset then
local lat, lon, label = queryResult:match('^(%-?%d+%.%d+),(%-?%d+%.%d+)~(.+)$')
if lat and lon then
lat = tonumber(lat) + 0.0001
queryResult = string.format('%.6f,%.6f~%s', lat, tonumber(lon), label)
end
end
table.insert(result, queryResult)
end
end
return table.concat(result, ';')
end
return p