Modul:Benutzer:Kpfiwa/NGAlist
Die Dokumentation für dieses Modul kann unter Modul:Benutzer:Kpfiwa/NGAlist/Doku erstellt werden
--[=[ NGAlink Version 6, 2021-11-01
Ausgabe einen Links, Aufruf PDF-Liste 110 - 116, internationalisiert
Ausgabe von qualifizierten Direktlinks, auch Seitenaufruf möglich möglich
--]=]
p = {}
local ngaen = {
-- Originaltitel
["110"] = "List of Lights, Pub. 110, Greenland, The East Coasts of North and South America (Excluding Continental U.S.A. Except the East Coast of Florida) and the West Indies",
["111"] = "List of Lights, Pub. 111, The West Coasts of North and South America (Excluding Continental U.S.A. and Hawaii), Australia, Tasmania, New Zealand, and the Islands of the North and South Pacific Oceans",
["112"] = "List of Lights, Pub. 112, Western Pacific and Indian Oceans Including the Persian Gulf and Red Sea",
["113"] = "List of Lights, Pub. 113, The West Coasts of Europe and Africa, the Mediterranean Sea, Black Sea and Azovskoye More (Sea of Azov)",
["114"] = "List of Lights, Pub. 114, British Isles, English Channel and North Sea",
["115"] = "List of Lights, Pub. 115, Norway, Iceland and Arctic Ocean",
["116"] = "List of Lights, Pub. 116, Baltic Sea with Kattegat, Belts and Sound and Gulf of Bothnia"
}
local ngade = {
-- deutsche Titel
["110"] = "110: Grönland, Ostküsten Nord-/Südamerikas (außer Kontinental-USA & Ostküste Floridas), Westindische Inseln",
["111"] = "111: Westküsten Nord-/Südamerikas (außer Kontinental-USA & Hawaii), Australien, Tasmanien, Neuseeland, Pazifikinseln",
["112"] = "112: Westpazifik, Indischer Ozean, Persischer Golf, Rotes Meer",
["113"] = "113: Westküsten Europas & Afrikas, Mittelmeer, Schwarzes Meer & Asowsches Meer",
["114"] = "114: Britische Inseln, Ärmelkanal, Nordsee",
["115"] = "115: Norwegen, Island, Arktischer Ozean",
["116"] = "116: Ostsee, Kattegat, Bottnischer Meerbusen"
}
local url = "[https://msi.nga.mil/queryResults?publications/ngalol/lights-buoys?volume="
local url1 = "[https://msi.nga.mil/api/publications/download?key=16694312/SFH00000/UpdatedPub"
local url2 = "bk.pdf&type=view"
local url3de = "]'' (PDF) [[National Geospatial-Intelligence Agency|NGA]] (englisch)" -- könnte man ggf. mit abruf ergänzen
local url3 =
"]'' (PDF) (= ''[[:en:List of Lights|List of Lights]]'') [[National Geospatial-Intelligence Agency|United States National Geospatial-Intelligence Agency]] " -- Fehler (Rotlink) 1:1 übernommen
local function tu(a, z) -- Wandelt in Versialen und gibt z Anfangsbuchstabe/n zurück
return string.sub(string.upper(a or ""), 1, z or 1)
end -- function tu(a, z)
function split(s) -- Teilt kombinierte Nummern wie 116-34567.9 auf
local a, c
local b = 0
if #s > 3 then
a, b = string.match(s .. "?", "(11[0-6])%D([%s%.0-9A-Z]*)")
else
a = s
end
return tonumber(a) or 0, (b or 0)
end -- function split(s)
-- Übergeben werden 1=list, [2|j|y=year], [3|p|s=page], [i=titel], [u=UHKOnr],[n=NGAnr],[l=label], [d=direct]
function p.nga(frame)
local lang = "DE" -- for Germaan version only!
local page, year, OK = 1, 1, 1
local direct, label, NGAnr, UHKOnr, VOLnr, both
local titel = ""
-- Abfrage der Spracheintellung, falls anders als DE
frame = mw.getCurrentFrame()
local lang = tu(mw.getContentLanguage():getCode(), 2)
local frame = frame:getParent()
-- Abfrage der Prameter
for key, val in pairs(frame.args) do -- Parameter sammeln und zuordnen
if key == 1 then -- auch Kombis wie wie 113-54564, 115/85646 möglich
VOLnr, listnr = split(val)
NGAnr = tonumber(listnr) or 0
if NGAnr < 1 then
NGAnr = nil
end
elseif key == 2 or tu(key) == "Y" or tu(key) == "J" then
year = tonumber(val) or 0
elseif key == 3 or tu(key) == "P" or tu(key) == "S" then
page = tonumber(val) or 1
elseif tu(key) == "U" then -- UKHO-Nummmer
UHKOnr = val
UHKOlabel = "UKHO: " .. UHKOnr
elseif tu(key) == "B" then -- NGA-Nummmer
both = true
elseif tu(key) == "N" then -- NGA-Nummmer
NGAnr = tonumber(val)
NGAlabel = "NGA: " .. NGAnr
elseif tu(key) == "L" then -- Nummer mit Label
label = OK
elseif tu(key) == "I" then -- Internationale Version
lang = tu(val, 1)
elseif tu(key) == "D" then -- Direktlink HTML, kann aber verschwinden, wenn diese Option rasiert wird
NGAnr = tonumber(val) or 1
if NGAnr > 1 then
NGAlabel = "NGA: " .. NGAnr
end
end -- if key 1 2 3 ...
end -- for key, val
--[[ Div. Fehler und Logikkontrollen. Reihenfolge wichtig
Hier, da übergebene Parameter keine nachvollziehbare Reihenfolge haben --]]
if both and UHKOnr then
if label == 1 then
return url ..
VOLnr ..
"&featureNumber=" ..
NGAnr .. "&includeRemovals=false&output=html " .. NGAlabel .. "</br />" .. UHKOlabel .. "]"
else
return url ..
VOLnr ..
"&featureNumber=" ..
NGAnr .. "&includeRemovals=false&output=html " .. UHKOnr .. "</br /><u>" .. NGAnr .. "</u>]"
end -- if label
end
-- if both
if label == 1 then
label = UHKOlabel or NGAlabel
else
label = UHKOnr or NGAnr
end
if NGAnr or direct then
return url .. VOLnr .. "&featureNumber=" .. NGAnr .. "&includeRemovals=false&output=html " .. label .. "]"
end
if year < 2022 and year > 2002 then -- geht nicht vor Gründung und nicht für Zukunft
year = ", " .. year
else
year = " "
end -- if year
----
if lang == "DE" then
if tonumber(page) > 0 then
pagenr = " S. " .. page .. " "
end -- gibt S. 123
NGAtitel = ngade
url3 = url3de
else
NGAtitel = ngaen
end -- if lang == "DE"
-- allgemeiner Link auf Auswahlseite
if not VOLnr or tonumber(VOLnr) < 110 or tonumber(VOLnr) > 116 then
if label then
return "''[https://msi.nga.mil/Publications/NGALOL Maritimer Safety Information]'' (PDF) [[National Geospatial-Intelligence Agency|NGA]] (englisch)"
else
return "''[https://msi.nga.mil/Publications/NGALOL Maritimer Safety Information]'' [[National Geospatial-Intelligence Agency|NGA]]"
end
else
titel = NGAtitel[tostring(VOLnr)]
end -- if not VOLnr
---
if tonumber(page) > 0 then
page = "#page=" .. page
else
page = "#page=1"
end
-- Reste raus und FINITO!
return "''" .. url1 .. VOLnr .. url2 .. page .. " " .. titel .. url3 .. year .. (pagenr or "") .. (NGAnr or "")
end -- function p.nga(frame)
return p