모듈:Location map이 모듈의 자세한 설명은 en:Module:Location_map/doc 항목을 참고하십시오.
require('strict')
local p = {}
local param_ko = require('모듈:Location map/i18n')
local getArgs = require('모듈:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('사용할 location map 정의의 이름을 지정해야 합니다', 2)
end
for kk, vv in pairs(param_ko) do
if vv ~= '' then
if map == kk then
map = vv
break
end
end
end
local moduletitle = mw.title.new('모듈:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q은(는) 위치 지도 정의의 유효한 이름이 아닙니다', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('모듈:Location map/data/' .. map)
return function(name, params)
if name == nil then
return '모듈:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
elseif mw.title.new('틀:위치 지도 ' .. map).exists then
local cache = {}
if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then
error('오래된 Location map을 사용할 때 프레임이 존재해야 합니다.')
end
return function(name, params)
if params then
return frame:expandTemplate{title = '위치 지도 ' .. map, args = { name, unpack(params) }}
else
if name == nil then
return '틀:위치 지도 ' .. map
elseif cache[name] == nil then
cache[name] = frame:expandTemplate{title = '위치 지도 ' .. map, args = { name }}
end
return cache[name]
end
end
else
error('지정된 위치 지도 정의를 찾을 수 없습니다. "모듈:Location map/data/' .. map .. '"이(가) 존재하지 않습니다', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error(direction .. '에서 십진법 형식과 도분초를 모두 제공할 수 없습니다', 2)
elseif minutes then
error(direction .. '에서 분은 도분초로만 제공될 수 있습니다', 2)
elseif seconds then
error(direction .. '에서 초는 도분초로만 제공될 수 있습니다', 2)
elseif hemisphere then
error(direction .. '에서 반구는 도분초로만 제공될 수 있습니다', 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error(direction .. '에 지정된 "' .. decimal .. '" 값은 유효하지 않습니다', 2)
elseif seconds and not minutes then
error('분 제공 없이 ' .. direction .. '에 초가 제공되었습니다', 2)
elseif not degrees then
if minutes then
error('도 제공 없이 ' .. direction .. '에 분이 제공되었습니다', 2)
elseif hemisphere then
error('도 제공 없이 ' .. direction .. '에 반구가 제공되었습니다', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error(direction .. '에 제공된 도 "' .. degrees .. '" 값은 유효하지 않습니다', 2)
elseif minutes and not tonumber(minutes) then
error(direction .. '에 제공된 분 "' .. minutes .. '" 값은 유효하지 않습니다', 2)
elseif seconds and not tonumber(seconds) then
error(direction .. '에 제공된 초 "' .. seconds .. '" 값은 유효하지 않습니다', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error(direction .. '에 제공된 반구 "' .. hemisphere .. '" 는 유효하지 않습니다', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local i18nmap = {['동'] = 'E', ['남'] = 'S', ['서'] = 'W', ['북'] = 'N'}
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber((para == 'longitude' or para =='경도') and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if table.maxn(result) == 1 then
coord = mw.ustring.gsub(coord, '.*geo%-dec', '')
local result1 = mw.text.split(mw.ustring.match(coord,'[남북]위 [%-%.%d]+°'), '[위경°]')
local result2 = mw.text.split(mw.ustring.match(coord,'[동서]경 [%-%.%d]+°'), '[위경°]')
result = {result1[2], i18nmap[result1[1]] or '', result2[2], i18nmap[result2[1]] or ''}
end
if para == 'longitude' or para == '경도' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('잘못 만들어진 좌표값')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('잘못 만들어진 좌표값', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == '설명' or key == 'maplink' or key == '지도링크' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap or args['대체지도'] then
return args.AlternativeMap or args['대체지도']
elseif (args.relief or args['지형도']) and (map('image1') or map('그림1')) ~= '' then
return map('image1') or map('그림1')
else
return map('image') or map('그림')
end
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width or args['기본너비']),"%d*"))
if not (args.width or args['너비']) then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width or args['너비'], -2) == 'px' then
width = mw.ustring.sub(args.width or args['너비'], 1, -3)
else
width = args.width or args['너비']
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if (args.max_width ~= "" or args['최대너비'] ~= "") and (args.max_width ~= nil or args['최대너비'] ~= nil) then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width or args['최대너비'],"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width or args['최대너비'];
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = '모듈:Location map/styles.css'}}
if args.float == 'center' or args['띄움'] == 'center' then
retval = retval .. '<div class="center">'
end
if (args.caption or args['설명']) and ((args.caption or args['설명']) ~= '') and ((args.border or args['테두리']) ~= 'infobox') then
retval = retval .. '<div class="locmap noviewer thumb '
if args.float == '"left"' or args.float == 'left' or args['띄움'] == '"left"' or args['띄움'] == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' or args['띄움'] == '"center"' or args['띄움'] == 'center' or args['띄움'] == '"none"' or args['띄움'] == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' or args['테두리'] == 'none' then
retval = retval .. ';border:none'
elseif (args.border or args['테두리']) then
retval = retval .. ';border-color:' .. (args.border or args['테두리'])
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. ((args.border ~= 'none' or args['테두리'] ~= 'none') and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' or args['띄움'] == '"left"' or args['띄움'] == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' or args['띄움'] == '"center"' or args['띄움'] == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' or args['띄움'] == '"none"' or args['띄움'] == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage]]',
retval,
image,
width,
(args.alt or args['말풍선']) or ((args.label or args['꼬리표'] or currentTitle.text) .. '은(는) ' .. (map('name') or map('이름'))) .. ' 안에 위치해 있다',
(args.maplink or args['지도링크'] ) and ('|link=' .. (args.maplink or args['지도링크'])) or ''
)
if (args.caption or args['설명']) and ((args.caption or args['설명']) ~= '') then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption or args['설명'], '##') then
retval = retval .. '[[분류:오류가 있을 수 있는 위치 지도|#]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not (args.caption or args['설명']) or (args.border == 'infobox' or args['테두리'] == 'infobox') then
if args.border or args['테두리'] then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. ((args.caption or args['설명']) or (args.label or args['꼬리표'] or currentTitle.text) .. '(' .. (map('name') or map('이름')) .. ')')
.. '</div>'
elseif (args.caption or args['설명']) ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. (args.caption or args['설명']) .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. (map('name') or map('이름')) .. '의 지도를 표시</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('제거된 파라미터 caption_undefined가 사용되었습니다.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[분류:오류가 있을 수 있는 위치 지도|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('지도 정의에 사용된 매개 변수가 제거됨 ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[분류:오류가 있을 수 있는 위치 지도|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('지도 정의 이름으로 사용되는 파이프 ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[분류:오류가 있을 수 있는 위치 지도|Pipe]]'
end
end
if args.float == 'center' or args['띄움'] == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv)
return mw.html.create('div')
:addClass('od')
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize, manual_position)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'manual' or position == '수동위치' or position == '수동' then
builder:addClass('pv'):cssText(manual_position)
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = '틀:위치 지도~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg or args['경도도'], args.lon_min or args['경도분'], args.lon_sec or args['경도초'], args.lon_dir or args['동서'], args.long or args['경도'], 'longitude')
latitude = decdeg(args.lat_deg or args['위도도'], args.lat_min or args['위도분'], args.lat_sec or args['위도초'], args.lat_dir or args['남북'], args.lat or args['위도'], 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates or args['좌표'] then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates or args['좌표'])
latitude = coord2text('latitude', args.coordinates or args['좌표'])
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if (args.link or args['링크']) and (currentTitle.namespace == 0) then
builder:wikitext('') --영어판에서는 위키데이터에서 좌표를 얻었다는 추적 분류
end
end
if not longitude then
error('경도값이 지정되지 않았습니다')
elseif not latitude then
error('위도값이 지정되지 않았습니다')
end
if currentTitle.namespace > 0 then
if (not (args.lon_deg or args['경도도'])) ~= (not (args.lat_deg or args['위도도'])) then
builder:wikitext('') --영어판에서는 위도와 경도의 정확도가 다르다는 추적 분류
elseif (not (args.lon_min or args['경도분'])) ~= (not (args.lat_min or args['위도분'])) then
builder:wikitext('') --영어판에서는 위도와 경도의 정확도가 다르다는 추적 분류
elseif (not (args.lon_sec or args['경도초'])) ~= (not (args.lat_sec or args['위도초'])) then
builder:wikitext('') --영어판에서는 위도와 경도의 정확도가 다르다는 추적 분류
elseif (not (args.lon_dir or args['동서'])) ~= (not (args.lat_dir or args['남북'])) then
builder:wikitext('') --영어판에서는 위도와 경도의 정확도가 다르다는 추적 분류
elseif (not (args.long or args['경도'])) ~= (not (args.lat or args['위도'])) then
builder:wikitext('') --영어판에서는 위도와 경도의 정확도가 다르다는 추적 분류
end
end
if ((tonumber(args.lat_deg or args['위도도']) or 0) < 0) and ((tonumber(args.lat_min or args['위도분']) or 0) ~= 0 or (tonumber(args.lat_sec or args['위도초']) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='') or (args['남북'] and args['남북'] ~='')) then
builder:wikitext('') --영어판에서는 좌표가 음수라는 추적 분류
end
if ((tonumber(args.lon_deg or args['경도도']) or 0) < 0) and ((tonumber(args.lon_min or args['경도분']) or 0) ~= 0 or (tonumber(args.lon_sec or args['경도초']) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '') or (args['동서'] and args['동서'] ~= '')) then
builder:wikitext('') --영어판에서는 좌표가 음수라는 추적 분류
end
if (((tonumber(args.lat_min or args['위도분']) or 0) < 0) or ((tonumber(args.lat_sec or args['위도초']) or 0) < 0)) then
builder:wikitext('') --영어판에서는 좌표가 음수라는 추적 분류
end
if (((tonumber(args.lon_min or args['경도분']) or 0) < 0) or ((tonumber(args.lon_sec or args['경도초']) or 0) < 0)) then
builder:wikitext('') --영어판에서는 좌표가 음수라는 추적 분류
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('호출에 사용된 제거된 파라미터.')
local parent = frame:getParent()
if parent then
mw.log('부모는 ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[분류:변수가 제거된 위치 지도|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('표시가 외부 플래그 설정 없이 지도 경계 외부에 놓였습니다. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('') --영어판에서는 좌표가 지도 밖이고 outside 인수가 미지정인 추적 분류
end
end
local mark = (args.mark or args['표시']) or (map('mark') or map('표시'))
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize or args['표시크기']) or tonumber(map('marksize') or map('표시크기')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or args['꼬리표'] or mw.title.getCurrentTitle().text, args.link or args['링크'] or '', args.alt or args['말풍선'], args[2])
local labelDiv
if (args.label or args['꼬리표']) and (args.position ~= 'none' or args['위치'] ~= 'none') then
labelDiv = markLabelDiv((args.label or args['꼬리표']), (args.label_size or args['꼬리표크기']) or 91, (args.label_width or args['꼬리표너비']) or 6, args.position or args['위치'], args.background or args['배경'], x, marksize, args.manual_position or args['수동위치'])
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = '틀:위치 지도', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] or args['설명'] then
if args['caption'] == "" or args['설명'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption'] or args['설명']
end
else
for caption in mw.text.gsplit((args['caption'] or args['설명']), '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap or args['대체지도'])
if #altmaps > #map then
error(string.format('%d개의 AlternativeMaps가 제공되고 있지만, %d개의 지도만 제공되고 있습니다', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d개의 overlay_images가 제공되고 있지만, %d개의 지도만 제공되고 있습니다', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d개의 captions가 제공되고 있지만, %d개의 지도만 제공되고 있습니다', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia