Module:Clues
Jump to navigation
Jump to search
Module documentation
This documentation is transcluded from Module:Clues/doc. [edit] [history] [purge]
Module:Clues requires Module:Map.
Creates the table rows (and pins) for compass and scan type clues.
--<nowiki>
local p = {}
local maps = require('Module:Map').buildMap
function p.temps(frame)
local args = frame:getParent().args
local ctype = frame.args['ctype'] or 'compass'
return p._compscan(args, ctype)
end
function p.convertDegMin(ns, ndeg, nmin, ew, edeg, emin)
if string.lower(ns) == 'n' or string.lower(ns) == 'north' then
ns = -1
end
if not tonumber(ns) then
ns = 1
end
if string.lower(ew) == 'w' or string.lower(ew) == 'west' then
ew = -1
end
if not tonumber(ew) then
ew = 1
end
local x = ew * (32 * edeg + math.ceil(emin * 8 / 15)) + 2440
local y = ns * (32 * ndeg + math.ceil(nmin * 8 / 15)) + 3161
return {x,y}
end
function p.coords(frame)
local coordconv = p.convertDegMin
local args = frame.args -- not parent
local _coordstr = args[1]
local coordstr = string.lower(args[1])
local img = args[2]
local oldcoords = {}
if string.find(coordstr, 'degree') then
local i = 0
for degstring in mw.ustring.gmatch(coordstr, '%d%d%s*degree' ) do
local num = mw.ustring.match(degstring, '%d%d')
if i == 0 then
oldcoords.ndeg = num
else
oldcoords.edeg = num
end
i = i + 1
end
i = 0
for minstring in mw.ustring.gmatch(coordstr, '%d%d%s*minutes' ) do
local num = mw.ustring.match(minstring, '%d%d')
if i == 0 then
oldcoords.nmin = num
else
oldcoords.emin = num
end
i = i + 1
end
if string.find(coordstr, 'north') then
oldcoords.ns = 1
else
oldcoords.ns = -1
end
if string.find(coordstr, 'east') then
oldcoords.ew = 1
else
oldcoords.ew = -1
end
else
local i = 0
for degmin in mw.ustring.gmatch(coordstr, '%d%d%.%d%d' ) do
if i == 0 then
oldcoords.ndeg = mw.ustring.match(degmin, '%d%d%.')
oldcoords.nmin = mw.ustring.match(degmin, '%.%d%d')
else
oldcoords.edeg = mw.ustring.match(degmin, '%d%d%.')
oldcoords.emin = mw.ustring.match(degmin, '%.%d%d')
end
i = i + 1
end
if string.find(coordstr, 'N') then
oldcoords.ns = 1
else
oldcoords.ns = -1
end
if string.find(coordstr, 'E') then
oldcoords.ew = 1
else
oldcoords.ew = -1
end
end
local converted, coords = pcall(coordconv, oldcoords.ns, oldcoords.ndeg, oldcoords.nmin, oldcoords.ew, oldcoords.edeg, oldcoords.emin)
if not converted then
return 'invalid coordinates '..tostring(coords)
end
local desc = _coordstr..'<br>('..coords[1]..','..coords[2]..')<br>[[File:'..img..']]'
local margs = {
x = coords[1],
y = coords[2],
mapID = 28,
plane = 0,
zoom = 2,
group = 'cclue'..coords[1]..coords[2],
etype = 'maplink',
text = 'Show on map',
features = 'pin',
iconWikiLink = 'Clue_Scroll_Pin-02.svg',
iconSize = {26,42},
iconAnchor = {13,42},
popupAnchor = {0,-42},
pins = { {x=coords[1], y=coords[2], title='Coordinate clue location', description=desc} }
}
return maps({string.format("%s,%s", margs.x, margs.y), text = "Show on map"})
end
return p
--</nowiki>