모듈:Location map/multi이 모듈의 자세한 설명은 en:Module:Location_map/multi/doc 항목을 참고하십시오.
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local locmap = require('Module:Location map')
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.container(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = '틀:위치 지도+', valueFunc = locmap.valueFunc})
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, 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 = locmap.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local placeslist = mw.text.gsplit(args.places or args['장소'], '#PlaceList#')
local permaplaces = {}
local numbermaps = #map
local count = 0
for i = 1,numbermaps do
permaplaces[i] = {}
end
for place in placeslist do
table.insert(permaplaces[count%numbermaps + 1],place)
count = count + 1
end
local altmaps = switcherSeparate(args.AlternativeMap or args['대체지도'])
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #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]
args.places = table.concat(permaplaces[k])
outputs[k] = p.container(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return locmap.top(frame, args, map) .. ((args.places or args['장소']) and (args.places or args['장소']):gsub('%s*\n%s*', '') or '') .. locmap.bottom(frame, args, map)
end
end
local function manyMakeArgs(fullArgs, n)
if n == 1 then
return {
lat = fullArgs.lat1 or fullArgs.lat or fullArgs['위도1'] or fullArgs['위도'],
long = fullArgs.long1 or fullArgs.long or fullArgs['경도1'] or fullArgs['경도'],
coordinates = fullArgs.coordinates1 or fullArgs.coordinates or fullArgs['좌표1'] or fullArgs['좌표'],
lat_deg = fullArgs.lat1_deg or fullArgs.lat_deg or fullArgs['위도도1'] or fullArgs['위도1도'] or fullArgs['위도도'],
lat_min = fullArgs.lat1_min or fullArgs.lat_min or fullArgs['위도분1'] or fullArgs['위도1분'] or fullArgs['위도분'],
lat_sec = fullArgs.lat1_sec or fullArgs.lat_sec or fullArgs['위도초1'] or fullArgs['위도1초'] or fullArgs['위도초'],
lat_dir = fullArgs.lat1_dir or fullArgs.lat_dir or fullArgs['남북1'] or fullArgs['남북'],
lon_deg = fullArgs.lon1_deg or fullArgs.lon_deg or fullArgs['경도도1'] or fullArgs['경도1도'] or fullArgs['경도도'],
lon_min = fullArgs.lon1_min or fullArgs.lon_min or fullArgs['경도분1'] or fullArgs['경도1분'] or fullArgs['경도분'],
lon_sec = fullArgs.lon1_sec or fullArgs.lon_sec or fullArgs['경도초1'] or fullArgs['경도1초'] or fullArgs['경도초'],
lon_dir = fullArgs.lon1_dir or fullArgs.lon_dir or fullArgs['동서1'] or fullArgs['동서'],
outside = fullArgs.outside1 or fullArgs.outside or fullArgs['바깥쪽1'] or fullArgs['바깥쪽'],
mark = fullArgs.mark1 or fullArgs.mark or fullArgs['표시1'] or fullArgs['표시'],
marksize = fullArgs.mark1size or fullArgs.marksize or fullArgs['표시크기1'] or fullArgs['표시크기'] or fullArgs['표시1크기'],
link = fullArgs.link1 or fullArgs.link or fullArgs['링크1'] or fullArgs['링크'],
label = fullArgs.label1 or fullArgs.label or fullArgs['꼬리표1'] or fullArgs['꼬리표'],
label_size = fullArgs.label1_size or fullArgs.label_size or fullArgs['꼬리표크기1'] or fullArgs['꼬리표1크기'] or fullArgs['꼬리표크기'],
label_width = fullArgs.label1_width or fullArgs.label_width or fullArgs['꼬리표너비1'] or fullArgs['꼬리표1너비'] or fullArgs['꼬리표너비'],
position = fullArgs.position1 or fullArgs.pos1 or fullArgs.position or fullArgs.pos or fullArgs['위치1'] or fullArgs['위치'],
background = fullArgs.background1 or fullArgs.bg1 or fullArgs.background or fullArgs.bg or fullArgs['배경1'] or fullArgs['배경']
}
else
return {
lat = fullArgs['lat' .. n] or fullArgs['위도' .. n],
long = fullArgs['long' .. n] or fullArgs['경도' .. n],
coordinates = fullArgs['coordinates' .. n] or fullArgs['좌표' .. n],
lat_deg = fullArgs['lat' .. n .. '_deg'] or fullArgs['위도도' .. n] or fullArgs['위도' .. n .. '도'],
lat_min = fullArgs['lat' .. n .. '_min'] or fullArgs['위도분' .. n] or fullArgs['위도' .. n .. '분'],
lat_sec = fullArgs['lat' .. n .. '_sec'] or fullArgs['위도초' .. n] or fullArgs['위도' .. n .. '초'],
lat_dir = fullArgs['lat' .. n .. '_dir'] or fullArgs['남북' .. n],
lon_deg = fullArgs['lon' .. n .. '_deg'] or fullArgs['경도도' .. n] or fullArgs['경도' .. n .. '도'],
lon_min = fullArgs['lon' .. n .. '_min'] or fullArgs['경도분' .. n] or fullArgs['경도' .. n .. '분'],
lon_sec = fullArgs['lon' .. n .. '_sec'] or fullArgs['경도초' .. n] or fullArgs['경도' .. n .. '초'],
lon_dir = fullArgs['lon' .. n .. '_dir'] or fullArgs['동서' .. n],
outside = fullArgs['outside' .. n] or fullArgs['바깥' .. n ],
mark = fullArgs['mark' .. n] or fullArgs['표시' .. n],
marksize = fullArgs['mark' .. n .. 'size'] or fullArgs['표시' .. n .. '크기'] or fullArgs['표시크기' .. n],
link = fullArgs['link' .. n] or fullArgs['링크' .. n],
label = fullArgs['label' .. n] or fullArgs['꼬리표' .. n],
label_size = fullArgs['label' .. n .. '_size'] or fullArgs['꼬리표' .. n .. '크기'] or fullArgs['꼬리표크기' .. n],
label_width = fullArgs['label' .. n .. '_width'] or fullArgs['꼬리표' .. n .. '너비'] or fullArgs['꼬리표너비' .. n],
position = fullArgs['position' .. n] or fullArgs['pos' .. n] or fullArgs['위치' .. n],
background = fullArgs['background' .. n] or fullArgs['bg' .. n] or fullArgs['배경' .. n]
}
end
end
function p.many(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = '틀:위치 지도 여럿', valueFunc = locmap.valueFunc})
end
if not args[1] then
args[1] = 'World'
end
if not map then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if #map ~= 1 then
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
outputs[k] = p.many(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
end
map = map[1]
end
local marks = {}
local markhigh
if args.markhigh or args['표시높이'] then
mw.log('Removed parameter markhigh used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
markhigh = true
end
for k, v in pairs(args) do -- @todo change to uargs once we have that
if v then
-- 영어 변수 처리
if string.sub(k, -4) == '_deg' then
k = string.sub(k, 1, -5)
end
if string.sub(k, 1, 3) == 'lat' then
k = tonumber(string.sub(k, 4))
if k then
table.insert(marks, k)
end
elseif string.sub(k, 1, 11) == 'coordinates' then
k = tonumber(string.sub(k, 12))
if k then
table.insert(marks,k)
end
end
-- 한국어 변수 처리
if k and string.find(k, '^위도[0-9]+$') then
k = string.gsub(k, '^위도', '')
k = tonumber(k)
if k then
table.insert(marks, k)
end
elseif k and string.find(k, '^위도도[0-9]+$') then
k = string.gsub(k, '^위도도', '')
k = tonumber(k)
if k then
table.insert(marks, k)
end
elseif k and string.find(k, '^위도[0-9]+도$') then
k = string.gsub(k, '^위도', '')
k = string.gsub(k, '도$', '')
k = tonumber(k)
if k then
table.insert(marks, k)
end
elseif k and string.find(k, '^좌표[0-9]+$') then
k = string.gsub(k, '^좌표', '')
k = tonumber(k)
if k then
table.insert(marks,k)
end
end
end
end
table.sort(marks)
if marks[1] ~= 1 and (args.lat or args['위도'] or args.lat_deg or args['위도도'] or args.coordinates or args['좌표']) then
table.insert(marks, 1, 1)
end
local body = ''
for _, v in ipairs(marks) do
-- don't try to consolidate this into the above loop. ordering of elements from pairs() is unspecified
body = body .. tostring( locmap.mark(frame, manyMakeArgs(args, v), map) )
if args['mark' .. v .. 'high'] or args['표시' .. v .. '높이'] or args['표시높이' .. v] then
mw.log('Removed parameter mark' .. v .. 'high used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
markhigh = true
end
end
args.label = nil -- there is no global label
return locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[분류:잠재적인 오류가 있는 위치 지도|제거된 변수를 사용하는 문서]]' or '')
end
function p.load(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
local dataModule = mw.loadData(frame.args[1])
if not map then
map = {}
for mapname in string.gmatch(dataModule.containerArgs[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if #map ~= 1 then
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
outputs[k] = p.load(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
end
map = map[1]
end
local marks = {}
if dataModule.marks then
for k,markArgs in ipairs(dataModule.marks) do
marks[k] = tostring(locmap.mark(frame, markArgs, map))
end
end
if dataModule.secondaryModules then
for _,modname in ipairs(dataModule.secondaryModules) do
for _,markArgs in ipairs(mw.loadData(modname).marks) do
marks[#marks + 1] = tostring(locmap.mark(frame, markArgs, map))
end
end
end
return locmap.top(frame, dataModule.containerArgs, map) .. table.concat(marks) .. locmap.bottom(frame, dataModule.containerArgs, map)
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