Moduuli:Geobox coor
Ulkoasu
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Geobox coor/ohje
-- this module implements [[template:geobox coor]]
local geobox_coor = {}
local coord_mod = require("Moduuli:En:Coordinates")
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
function geobox_coor.main( frame )
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs( frame.args ) do
origArgs = frame.args
break
end
else
origArgs = frame
end
local args = {}
for k, v in pairs( origArgs ) do
if type( k ) == 'number' or v ~= '' then
args[ k ] = v
end
end
return geobox_coor._coord( args )
end
function geobox_coor._coord(args)
--local args = frame.args
--local args = {}
--for k, v in pairs( frame.args ) do
-- if type( k ) == 'number' or v ~= '' then
-- args[ k ] = v
-- end
--end
local tstr = args['9'] or 'type:other'
local dstr = isnotempty(args['title']) and 'inline,title' or 'inline'
local lat_dir = isnotempty(args[4]) and args[4] or 'N'
local lon_dir = isnotempty(args[8]) and args[8] or 'E'
local prefix = args['prefix'] or ''
local suffix = args['suffix'] or ''
local cname = args['name']
local innerprefix = args['innerprefix'] or ''
local innersuffix = args['innersuffix'] or ''
local cstr = ''
if( isnotempty(args[3]) ) then
cstr = coord_mod._coord(
{args[1], args[2], args[3], lat_dir, args[5], args[6], args[7], lon_dir,
tstr, format = args['format'] or 'dms', name = cname, display = dstr}
)
elseif( isnotempty(args[2]) ) then
cstr = coord_mod._coord(
{args[1], args[2], lat_dir, args[5], args[6], lon_dir,
tstr, format = args['format'] or 'dms', name = cname, display = dstr}
)
elseif( isnotempty(args[4]) ) then
cstr = coord_mod._coord(
{args[1], lat_dir, args[5], lon_dir,
tstr, format = args['format'] or 'dec', name = cname, display = dstr}
)
elseif( isnotempty(args[1]) ) then
cstr = coord_mod._coord(
{args[1], args[5],
tstr, format = args['format'] or 'dec', name = cname, display = dstr}
)
elseif( isnotempty(args['wikidata']) and mw.wikibase.getEntityObject()) then
local entity = mw.wikibase.getEntityObject()
if(entity and entity.claims and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value') then
local math_mod = require("Module:Math")
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
local latitude = entity.claims.P625[1].mainsnak.datavalue.value.latitude
local longitude = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision=-math_mod._round(math.log(precision)/math.log(10),0)
latitude = math_mod._round(latitude,precision)
longitude= math_mod._round(longitude,precision)
end
cstr = coord_mod._coord(
{latitude, longitude, tstr, format = args['format'] or 'dms', name = cname, display = dstr}
)
end
else
return ''
end
return cstr
--if(isnotempty(args['wrap'])) then
-- return prefix .. innerprefix .. cstr .. innersuffix .. suffix
--else
-- return prefix .. '<span style="white-space:nowrap">' .. innerprefix .. cstr .. innersuffix .. '</span>' .. suffix
--end
end
return geobox_coor