Modül:Konum haritası/çoklu

Modül belgelemesi
require('Modül:Küresel değil')local p = {}local getArgs = require('Modül:Bağımsız değişkenler').getArgslocal locmap = require('Modül:Konum haritası')function p.container(frame, args, map)if not args thenargs = getArgs(frame, {wrappers = 'Şablon:Konum haritası+', valueFunc = locmap.valueFunc})endif not map thenmap = locmap.getMapParams(args[1], frame)endlocmap.getTurkishParams(args)return locmap.top(frame, args, map) .. (args.places or '') .. locmap.bottom(frame, args, map)endlocal function manyMakeArgs(fullArgs, n)if n == 1 thenlocmap.getTurkishParams(fullArgs)return {lat = fullArgs.lat1 or fullArgs.lat,long = fullArgs.long1 or fullArgs.long,coordinates = fullArgs.coordinates1 or fullArgs.coordinates,lat_deg = fullArgs.lat1_deg or fullArgs.lat_deg,lat_min = fullArgs.lat1_min or fullArgs.lat_min,lat_sec = fullArgs.lat1_sec or fullArgs.lat_sec,lat_dir = fullArgs.lat1_dir or fullArgs.lat_dir,lon_deg = fullArgs.lon1_deg or fullArgs.lon_deg,lon_min = fullArgs.lon1_min or fullArgs.lon_min,lon_sec = fullArgs.lon1_sec or fullArgs.lon_sec,lon_dir = fullArgs.lon1_dir or fullArgs.lon_dir,mark = fullArgs.mark1 or fullArgs.mark,marksize = fullArgs.mark1size or fullArgs.marksize,link = fullArgs.link1 or fullArgs.link,label = fullArgs.label1 or fullArgs.label,label_size = fullArgs.label1_size or fullArgs.label_size,position = fullArgs.position1 or fullArgs.pos1 or fullArgs.position or fullArgs.pos,background = fullArgs.background1 or fullArgs.bg1 or fullArgs.background or fullArgs.bg}elsereturn {lat = fullArgs['enlem' .. n] or fullArgs['lat' .. n],long = fullArgs['boylam' .. n] or fullArgs['long' .. n],coordinates = fullArgs['koordinatlar' .. n] or fullArgs['coordinates' .. n],lat_deg = fullArgs['enlem' .. n .. '_der'] or fullArgs['lat' .. n .. '_deg'],lat_min = fullArgs['enlem' .. n .. '_dak'] or fullArgs['lat' .. n .. '_min'],lat_sec = fullArgs['enlem' .. n .. '_san'] or fullArgs['lat' .. n .. '_sec'],lat_dir = fullArgs['enlem' .. n .. '_dir'] or fullArgs['lat' .. n .. '_dir'],lon_deg = fullArgs['boylam' .. n .. '_der'] or fullArgs['lon' .. n .. '_deg'],lon_min = fullArgs['boylam' .. n .. '_dak'] or fullArgs['lon' .. n .. '_min'],lon_sec = fullArgs['boylam' .. n .. '_san'] or fullArgs['lon' .. n .. '_sec'],lon_dir = fullArgs['boylam' .. n .. '_dir'] or fullArgs['lon' .. n .. '_dir'],outside = fullArgs['dışarıda' .. n] or fullArgs['outside' .. n],mark = fullArgs['işaret' .. n] or fullArgs['mark' .. n],marksize = fullArgs['işaret' .. n .. '_boyutu'] or fullArgs['mark' .. n .. 'size'],link = fullArgs['bağ' .. n] or fullArgs['link' .. n],label = fullArgs['etiket' .. n] or fullArgs['label' .. n],label_size = fullArgs['etiket' .. n .. '_boyutu'] or fullArgs['label' .. n .. '_size'],position = fullArgs['etiket' .. n .. '_konumu'] or fullArgs['position' .. n] or fullArgs['pos' .. n],background = fullArgs['arkaplan' .. n] or fullArgs['background' .. n] or fullArgs['bg' .. n]}endendfunction p.many(frame, args, map)if not args thenargs = getArgs(frame, {wrappers = 'Şablon:Konum haritası çoklu', valueFunc = locmap.valueFunc})endif not args[1] thenargs[1] = 'World'endif not map thenmap = {}for mapname in string.gmatch(args[1], '[^#]+') domap[#map + 1] = locmap.getMapParams(mapname, frame)endif #map ~= 1 thenlocal outputs = {}args.autoSwitcherLabel = truefor k,v in ipairs(map) dooutputs[k] = p.many(frame, args, v)endreturn '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'endmap = map[1]endlocal marks = {}local markhighif args.markhigh thenmw.log('Removed parameter markhigh used.')local parent = frame:getParent()if parent thenmw.log('Parent is ' .. parent:getTitle())endmw.logObject(args, 'args')markhigh = trueendfor k, v in pairs(args) do -- @todo change to uargs once we have thatif v thenif string.sub(k, -4) == '_deg' or string.sub(k, -4) == '_der' thenk = string.sub(k, 1, -5)endif string.sub(k, 1, 3) == 'lat' thenk = tonumber(string.sub(k, 4))if k thentable.insert(marks, k)endelseif string.sub(k, 1, 5) == 'enlem' thenk = tonumber(string.sub(k, 6))if k thentable.insert(marks, k)endelseif string.sub(k, 1, 11) == 'coordinates' thenk = tonumber(string.sub(k, 12))if k thentable.insert(marks, k)endelseif string.sub(k, 1, 12) == 'koordinatlar' thenk = tonumber(string.sub(k, 13))if k thentable.insert(marks, k)endendendendtable.sort(marks)if marks[1] ~= 1 and (args.lat or args.lat_deg) thentable.insert(marks, 1, 1)endlocal body = ''for _, v in ipairs(marks) do-- don't try to consolidate this into the above loop. ordering of elements from pairs() is unspecifiedbody = body .. tostring( locmap.mark(frame, manyMakeArgs(args, v), map) )if args['mark' .. v .. 'high'] thenmw.log('Removed parameter mark' .. v .. 'high used.')local parent = frame:getParent()if parent thenmw.log('Parent is ' .. parent:getTitle())endmw.logObject(args, 'args')markhigh = trueendendargs.label = nil -- there is no global labelreturn locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[Category:Location maps with possible errors|Page using removed parameter]]' or '')endfunction p.load(frame, args, map)if not args thenargs = getArgs(frame, {frameOnly = true})endlocal dataModule = mw.loadData(frame.args[1])if not map thenmap = {}for mapname in string.gmatch(dataModule.containerArgs[1], '[^#]+') domap[#map + 1] = locmap.getMapParams(mapname, frame)endif #map ~= 1 thenlocal outputs = {}args.autoSwitcherLabel = truefor k,v in ipairs(map) dooutputs[k] = p.load(frame, args, v)endreturn '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'endmap = map[1]endlocal marks = {}if dataModule.marks thenfor k,markArgs in ipairs(dataModule.marks) domarks[k] = tostring(locmap.mark(frame, markArgs, map))endendif dataModule.secondaryModules thenfor _,modname in ipairs(dataModule.secondaryModules) dofor _,markArgs in ipairs(mw.loadData(modname).marks) domarks[#marks + 1] = tostring(locmap.mark(frame, markArgs, map))endendendreturn locmap.top(frame, dataModule.containerArgs, map) .. table.concat(marks) .. locmap.bottom(frame, dataModule.containerArgs, map)endreturn p