Modul:Kartposisjon/multi
Hopp til navigering
Hopp til søk
- Modul:Kartposisjon • Modul:Kartposisjon/sandkasse • forskjellig (diff)
- Modul:Kartposisjon/multi • Modul:Kartposisjon/multi/sandkasse • forskjellig (diff)
- Modul:Kartposisjon/info • Modul:Kartposisjon/info/sandkasse • samme innhold
require('strict') local p = {} local getArgs = require('Modul:Arguments').getArgs local locmap = require('Modul:Kartposisjon') function p.container(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Mal:Kartposisjon+', valueFunc = locmap.valueFunc}) end if not map then map = locmap.getMapParams(args[1], frame) end return locmap.top(frame, args, map) .. (args.steder or '') .. locmap.bottom(frame, args, map) end local function manyMakeArgs(fullArgs, n) if n == 1 then return { fullArgs[1], lat = fullArgs.lat1 or fullArgs.lat, long = fullArgs.long1 or fullArgs.long, 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, merke = fullArgs.merke1 or fullArgs.merke, merke_str = fullArgs['merke1_str'] or fullArgs['merke_str'], lenke = fullArgs.lenke1 or fullArgs.lenke, stedsnavn = fullArgs.stedsnavn1 or fullArgs.stedsnavn, stedsnavn_str = fullArgs['stedsnavn1_størrelse'] or fullArgs['stedsnavn_størrelse'] or fullArgs['tekststørrelse1'] or fullArgs['tekststørrelse'], posisjon = fullArgs.posisjon1 or fullArgs.pos1 or fullArgs.posisjon or fullArgs.pos, farge = fullArgs.farge1 or fullArgs.bg1 or fullArgs.farge or fullArgs.bg } else return { fullArgs[1], lat = fullArgs['lat' .. n], long = fullArgs['long' .. n], lat_deg = fullArgs['lat' .. n .. '_deg'], lat_min = fullArgs['lat' .. n .. '_min'], lat_sec = fullArgs['lat' .. n .. '_sec'], lat_dir = fullArgs['lat' .. n .. '_dir'], lon_deg = fullArgs['lon' .. n .. '_deg'], lon_min = fullArgs['lon' .. n .. '_min'], lon_sec = fullArgs['lon' .. n .. '_sec'], lon_dir = fullArgs['lon' .. n .. '_dir'], outside = fullArgs['utenfor' .. n], merke = fullArgs['merke' .. n], merke_str = fullArgs['merke' .. n .. '_str'], lenke = fullArgs['lenke' .. n], stedsnavn = fullArgs['stedsnavn' .. n], stedsnavn_str = fullArgs['stedsnavn' .. n .. '_størrelse'] or fullArgs['tekststørrelse' .. n], posisjon = fullArgs['posisjon' .. n] or fullArgs['pos' .. n], farge = fullArgs['farge' .. n] or fullArgs['bg' .. n] } end end function p.many(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Mal:Kartposisjon mange', 'Mal:Koord+kart', valueFunc = locmap.valueFunc}) end if not args[1] then args[1] = 'Verden' 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 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 end end end table.sort(marks) if marks[1] ~= 1 and (args.lat or args.lat_deg) 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'] 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.stedsnavn = nil -- there is no global label return locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[Category:Location maps with possible errors|Page using removed parameter]]' 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