Modul:NGAlist
Das Modul gibt eine Tabelle mit einem darstellbaren Beschreibungs- und Linktext aus, um die Einträge in den NGA-Handbüchern anzuzeigen.
Parameter
BearbeitenErkannt werden bis zu drei nummerierte Parameter und bis zu sechs benannte Parameter. Der Einsatz und Bedeutung sind in der Dokumentation beschrieben.
Alle benannten Parameter werden vom Modul nur mit dem ersten Buchstaben erkannt. Groß- oder Kleinschreibung sind irrelevant, der Paramtername kann somit selbsterklärend verwendet werden (Jahr, year. page, Seite, INT, international usw.), sollte jedoch bei einem Einsatz der Vorlage verständlich und nachvollziehbar bleiben.
Position oder Nummer | Benennung | Wert |
---|---|---|
1 | Handbuchnummer 110 bis 116 fehlt sie, wird auf die Auswahlseite verlinkt | |
2 | y oderj |
anzuzeigedes Erscheinungs[j]ahr, nur aus Kompatibilitätsgründen, da stets die aktuellste Version aufgerufen wird |
3 | s oderp |
Handbuch[s]eite mit dem Eintrag. Die PDF-Dokumentseite stimmt nicht mit der Seitennummer überein! Bei fehlender oder Falscheingabe erscheint die Titlseite |
n |
NGA-Nummer, die angezeigt wird, wenn u nicht angegeben. Die UKHO-Nummer hat Anzeige-Priorität. Ist n angegeben, wird automatisch mit einem HTML-Auszug der Objektbeschreibung bei NGA statt mit der langen PDF-Liste verlinkt.
| |
u |
UKHO-Nummer, die angezeigt wird. Ist leichzeitig n zusätzlich angegeben, wird mit dem HTML-Auszug der Objektbeschreibung bei NGA verlinkt.
| |
i |
[I]nternationale Version mit Originaltiteln und Darstellung, wie bei Template:Cite ngall; (Vorlage:Cite ngall ist fehlerhaft) | |
l |
[L]abel,vor der Objektnummer wird NGA bzw. UKHO angezeigt (für Listen ohne Überschrift) |
function | Parameter | return | |
---|---|---|---|
tu(a, z) |
a = string; z = Anzahl (default=1) |
versale Anfangsbuchstabe(n) | ermöglicht flexible Parameternamen |
split(s) |
s = string |
Handbuchnummer, Objektnummer | Teilt kombinierte Nummern wie 116-34567.9 auf |
p.nga(frame) |
Parameter aus Vorlage | Ausgabestring | Haupteinstieg und Verarbeitungssteuerung |
- Achtung, die Reihenfolge der Verarbeitungsschritte ist festgelegt. Austausch kann zu Fehlern führen
--[=[ 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