Модул:Geobox coor — разлика између измена
Пређи на навигацију
Пређи на претрагу
(+) |
м (1 измена увезена) |
||
| (Нису приказане 2 међуизмене 2 корисника) | |||
| Ред 2: | Ред 2: | ||
local geobox_coor = {} | local geobox_coor = {} | ||
local function isnotempty(s) | local function isnotempty(s) | ||
| Ред 15: | Ред 14: | ||
wrappers = 'Template:Geobox coor' | wrappers = 'Template:Geobox coor' | ||
}) | }) | ||
return geobox_coor[funcName](args) | return geobox_coor[funcName](args, frame) | ||
end | end | ||
end | |||
local function coord_wrapper(frame, in_args) | |||
return frame:expandTemplate{ title = 'coord', args = in_args } | |||
end | end | ||
geobox_coor.coord = makeInvokeFunc('_coord') | geobox_coor.coord = makeInvokeFunc('_coord') | ||
function geobox_coor._coord(args) | function geobox_coor._coord(args, frame) | ||
local tstr = args['9'] or 'type:other' | local tstr = args['9'] or 'type:other' | ||
local dstr = isnotempty(args['title']) and 'inline,title' or 'inline' | local dstr = isnotempty(args['title']) and 'inline,title' or 'inline' | ||
| Ред 27: | Ред 30: | ||
local prefix = args['prefix'] or '' | local prefix = args['prefix'] or '' | ||
local suffix = args['suffix'] or '' | local suffix = args['suffix'] or '' | ||
local innerprefix = args['innerprefix'] or '' | local innerprefix = args['innerprefix'] or '' | ||
local innersuffix = args['innersuffix'] or '' | local innersuffix = args['innersuffix'] or '' | ||
| Ред 34: | Ред 36: | ||
if( isnotempty(args[3]) ) then | if( isnotempty(args[3]) ) then | ||
cstr = | cstr = coord_wrapper(frame, | ||
{args[1], args[2], args[3], lat_dir, args[5], args[6], args[7], lon_dir, | {args[1], args[2], args[3], lat_dir, args[5], args[6], args[7], lon_dir, | ||
tstr, format = args['format'] or 'dms' | tstr, format = args['format'] or 'dms', display = dstr} | ||
) | ) | ||
elseif( isnotempty(args[2]) ) then | elseif( isnotempty(args[2]) ) then | ||
cstr = | cstr = coord_wrapper(frame, | ||
{args[1], args[2], lat_dir, args[5], args[6], lon_dir, | {args[1], args[2], lat_dir, args[5], args[6], lon_dir, | ||
tstr, format = args['format'] or 'dms' | tstr, format = args['format'] or 'dms', display = dstr} | ||
) | |||
elseif( isnotempty(args[4]) ) then | elseif( isnotempty(args[4]) ) then | ||
cstr = | cstr = coord_wrapper(frame, | ||
{args[1], lat_dir, args[5], lon_dir, | {args[1], lat_dir, args[5], lon_dir, | ||
tstr, format = args['format'] or 'dec' | tstr, format = args['format'] or 'dec', display = dstr} | ||
) | |||
elseif( isnotempty(args[1]) ) then | elseif( isnotempty(args[1]) ) then | ||
cstr = | cstr = coord_wrapper(frame, | ||
{args[1], args[5], | {args[1], args[5], | ||
tstr, format = args['format'] or 'dec' | tstr, format = args['format'] or 'dec', display = dstr} | ||
) | |||
elseif( isnotempty(args['wikidata']) and mw.wikibase.getEntityObject()) then | elseif( isnotempty(args['wikidata']) and mw.wikibase.getEntityObject()) then | ||
local entity = mw.wikibase.getEntityObject() | local entity = mw.wikibase.getEntityObject() | ||
| Ред 66: | Ред 68: | ||
longitude= math_mod._round(longitude,precision) | longitude= math_mod._round(longitude,precision) | ||
end | end | ||
cstr = | cstr = coord_wrapper(frame, | ||
{latitude, longitude, tstr, format = args['format'] or 'dms' | {latitude, longitude, tstr, format = args['format'] or 'dms', display = dstr} | ||
) | ) | ||
end | end | ||
else | else | ||
return '' | return '' | ||
end | end | ||
Тренутна верзија на датум 5. фебруар 2021. у 13:49
Документацију овог модула можете да направите на страници Модул:Geobox coor/док
-- this module implements [[template:geobox coor]]
local geobox_coor = {}
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
-- Wrapper function to grab args (from Module:Coordinates),
-- see Module:Arguments for this function's documentation.
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Geobox coor'
})
return geobox_coor[funcName](args, frame)
end
end
local function coord_wrapper(frame, in_args)
return frame:expandTemplate{ title = 'coord', args = in_args }
end
geobox_coor.coord = makeInvokeFunc('_coord')
function geobox_coor._coord(args, frame)
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' or 'С'
local lon_dir = isnotempty(args[8]) and args[8] or 'E' or 'И'
local prefix = args['prefix'] or ''
local suffix = args['suffix'] or ''
local innerprefix = args['innerprefix'] or ''
local innersuffix = args['innersuffix'] or ''
local cstr = ''
if( isnotempty(args[3]) ) then
cstr = coord_wrapper(frame,
{args[1], args[2], args[3], lat_dir, args[5], args[6], args[7], lon_dir,
tstr, format = args['format'] or 'dms', display = dstr}
)
elseif( isnotempty(args[2]) ) then
cstr = coord_wrapper(frame,
{args[1], args[2], lat_dir, args[5], args[6], lon_dir,
tstr, format = args['format'] or 'dms', display = dstr}
)
elseif( isnotempty(args[4]) ) then
cstr = coord_wrapper(frame,
{args[1], lat_dir, args[5], lon_dir,
tstr, format = args['format'] or 'dec', display = dstr}
)
elseif( isnotempty(args[1]) ) then
cstr = coord_wrapper(frame,
{args[1], args[5],
tstr, format = args['format'] or 'dec', 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_wrapper(frame,
{latitude, longitude, tstr, format = args['format'] or 'dms', display = dstr}
)
end
else
return ''
end
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