Benutzer:Kpfiwa/Spielwiese/Modul:Infobox Leuchtfeuer TEST

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

coord="45° 36′ 0″ N, 29° 53′ 24″ O
"

poka="{{Positionskarte+|Ukraine Oblast Odessa|float=center|width=250|relief=1|border=none|caption=|places=

Unterfeuer


" flag="Deutschland

Deutschland


Deutschland
"

--[=[ Leuchtfeuer Version 1 BETA, 2021-08-01 Formatierung der Infobox Leuchtfeuer für 2 Leichttürme am gleichen Ort (Molenfeuer, Richtfeuer etc.) --]=]

p = {} local lang = mw.getContentLanguage():getCode() liste = "Modul:Benutzer:Kpfiwa/Infobox Leuchtfeuer/Info_" .. lang -- Modul:Benutzer:Kpfiwa/Infobox Leuchtfeuer/Info de info = {} local kopfzeile = {lemma, name, altname} -- local _TEST = 'LOS\n----
\n' ..flag .. '\n' .. poka ..'\n' .. coord .. '\n{| local _TEST = 'LOS\n----
\n{| class="wikitable float-right infobox hintergrundfarbe2 toptextcells"\n!Key!!Wert' infobox = '{| class="wikitable float-right infobox hintergrundfarbe2 toptextcells"' -- Eröffnung der Box

local function fehler(txt) -- Fehlerfall; enthält Fehlermeldung return '' .. (txt or "FEHLER") .. '' end -- function fehler local erg, info = pcall(require, liste) ; fehler('Liste nicht verfügbar')-- hier noch auf Fehler abfragen

--- EVENTUELL ALLE FUNKTIONEN AUSLAGRTN! local function div(xxx) -- Trener ("Listeneinträge"), wenn was an Listen geboten, ggf auch für Bemerkungsblock --Progrmm end

local function finito(xxx) -- Tabellenabschluss , ggf entbehrlich --Progrmm end

local function rem(xxx) -- Bemekungszeile (ggf (I) automatisch --Progrmm end local function row(xxx) -- normale Zeile, ggf. zusammengefasst wenn vr='=' oder vl==vr --Progrmm end local function seamap(xxx) -- berechnen, wird via pos eingefügt. evtl. dort einbringen --Progrmm end

local function sm(xxx) -- Berechnung Semeilen sm2km|1|1 oder ggf abfragen, ob da sm, -- oder km bereits steht, dann 1:1 übernehmen ggf <rem> akzeptieren --Progrmm end

local function top(xxx) -- Rabellenstart, ggf entbehrlich --Progrmm end

local function head(lemma, name, altname) -- Überschrift local erg = '\n!colspan="3" style="text-align:center"|' erg = erg .. name or lemma if altname then

erg = erg .. "


" .. altname

end return erg end -- function haed

local function pic(p1, p2, c1, c2) -- Bild/er local erg = "\n|" if p1 == p2 or p2 == "=" then

erg = erg .. 'colspan="3" style="text-align:center"|

Datei:' .. p1 .. "

"

if c1 then erg = erg .. "
" .. c1 -- ohne 2. Bildunterschrift end else erg = erg .. " ||" if p1 then -- 1. Bild, notfalls leer

erg = erg .. 'style="text-align:center"|

Datei:' .. p1 .. "

"

if c1 then erg = erg .. "
" .. c1 end -- 1. Bildunterschrift end erg = erg .. "||" if p2 then -- 2. Bild

erg = erg .. 'style="text-align:center"|

Datei:' .. p2 .. "

"

if c2 then erg = erg .. "
" .. c2 end -- 2. Bildunterschrift end end return erg end -- function pic

local function unique(txt) -- muss mit einzelnen Umlauten sein, da es sonst knirscht wg. UTF-8!! txt = txt:gsub("%s", "") -- alle Leerzeichen weg, somit auch keine doppelten txt = txt:gsub("ö", "OE") txt = txt:gsub("Ö", "OE") -- Umlaute einzeln umbauen, da UTF-8 mitunter Ärger macht txt = txt:gsub("ü", "UE") txt = txt:gsub("Ü", "UE") txt = txt:gsub("ä", "AE") txt = txt:gsub("Ä", "AE") txt = txt:gsub("ß", "SS") txt = txt:gsub("[%_%-%‐%‑%–%—]+", "") -- alle Striche weg, dann gibt es keine Verwechslungen txt = txt:gsub("%++", "1") -- Alle + werden 1, dann kann es nie mit Additions-+ versechselt werden return string.upper(txt) -- Alles auf Versalien, damit ist das ewige Leid bei den Vorlagen behoben. end -- function unique


function pos(latlon, dir) -- einheitliches Format bei Positionen, Positionsberechnung -- Seamap berechnen, Erstellen der Lagekarte mit beiden Positionen (colspan=2) local ll, erg, llm, lls, ns, corr, max = {}, 0, 0, 0, 1, 360, 180 --[[ NSOW auswerten, nur WS ist interessant da negativ; shit für Franzosen mit 'Ouest' evtl über Sprache abwickeln--]] if dir == "[sSwW]+" or latlon:find("[wsWS]+") then -- für SW (max 90°), oder NE (180°) corr = 180 max = 90 ns = -1 if latlon:find("[wsWS]+") then ns = -1 end end -- if dir -- vorab alle Eingabefehler ausgleichen latlon = latlon:gsub("%s", "") -- alle Leerzeichen weg latlon = latlon:gsub(",", ".") -- Dezimalkomma wird Dezimalpunkt latlon = latlon:gsub("[%°]+", "/") -- konventionelles Gradzeichen umsetzen:° ist UTF8, deswegen separat latlon = latlon:gsub('[%\'"]', "/") -- konventionelle Min. umsetzen latlon = latlon:gsub("//", "/") -- falls Sekunden mit "''" angegeben ll = {string.match(latlon, "(%d+)/([%d%.]*)/*([%d%.]*)/*(%a*)")} -- Grad, min, sec, Richtung aufdröseeln ell = {string.match(latlon, "(%d+)/([%d%.]*)/*([%d%.]*)")} -- Grad, min, sec aufdröseeln erg = ll[1] * 1 llm = ll[2] * 1 lls = ll[3] * 1 -- billiger als tonumber -- Falsche Gradeingaben korrigieren (EW)>180, NS>190 if erg > max then erg = erg - corr end if llm > 60 then llm = 60 end -- Fehlertoleranz, zuviel ergibt dann 1° if lls > 60 then lls = 60 end -- ergibt 1' erg = ((((lls / 60) + llm) / 60) + erg) * ns -- eigntliche Dezimalumrechnung return math.floor(erg * 10 ^ 7 + 0.5) / 10 ^ 7 -- gerundet auf max 7 Stellen, as reicht total end -- function pos(latlon)

local function rows(label, col1, col2) -- eine Tabelenzeile zusammensetzen, ggf. übergehen local row = "" -- verarbeiten; wenn beide gleich oder col2 == '=', dann Wert zentriert einbringen mit colspan=2 if label and (col1 or col2) then row = "|- " .. label .. "||" if col1 == col2 or col2 == "=" then -- evtl '=' noch bereinigen von Doppel-/Folgezeichen row = row .. 'colspan="2" align=center|' .. col1 else row = row .. col1 or "" .. "||" .. col2 or "" end end return row end -- function rows

local function writeval(k, v) -- schreibt Wert in k= KEY "Muttereintrag" vl, bei KEY1 nach vr local v = "vl" local i = string.find(k, "%d", -1) if i then k = (string.sub(k, 1, i - 1)) c = "vr" end info[k][c] = v end -- function writeval

function p.f(frame) info.LEMMA.val = frame.args["seitenname"] -- falls NAME= NIL ist wird der Lemmaname übeernommen if info.NAME.val == NIL then info.NAME.val = info.LEMMA.val -- sollte unter NAME geschrieben wegden, wotd ggf. überschrieben durch para NAME end _TEST = _TEST .. "\n|-\n| kopfzeile[lemma]|| " .. info.NAME.val or "NIXLEMMANAME" local frame = frame:getParent() for key, val in pairs(frame.args) do -- Alle Parameter sammeln und Zeilen zuordnen key = unique(key) -- Umlaute usw. vereinheitlichen, alles Versalien, dann werden Schreibfehler ausgeglichen --{[ das muss über eine Tabelle ablaufen, etwa so if key == info.key then info.vall = val end -- eher ein Wert, typ und letzte 1 (Name1) auswerteen, nach ohne1 schreiben _TEST = _TEST .. "\n|-\n| " .. (key or 0) .. " || " .. (val or "NONIX") -- TESTVERSION end -- for key -- jetzt die Zeilen der Reihenfolge nach in die entsprechende Funktion jagen und an 'infobox ' anhängen, letzter Eintrag = '\n|}\n' -- return 'AAA: ' .. _TEST ..'BBB: ' .. info.NAME.val.. '\n|}' -- ["LAGEHOEHE"] = {label="Höhe Turmbasis: --return 'AAA: ' .. _TEST ..'BBB: ' .. info.BILD.vl .. '\n|}' return _TEST end -- function p.f(frame)


return p