Modul:EuroVelo

aus Wikipedia, der freien Enzyklopädie

Die Erklärung ergibt sich aus den Anmerkungen. Es wurden zusätzlich einige Parameter verwendet, die somit für eine fremdsprachige Version reserviert sind.


--[=[ 2019-09-04
-- Beta-Version
-- Zur Darstellung der EuroVelo-Routen in Listen und Tabellen
]=]

p = {}

local nr, nrc, c = 0, '0', 1
local evl = "EuroVelo"
local unk = "''- unbekannt -''"
local liste = {1,2,3,4,5,6,7,8,9,10,11,12,13,15,17,19}
local logopxdefault = 20
local s, linktextformat = '', ''
local ll = true
local lang = mw.getContentLanguage():getCode()
local Liste = "Modul:EuroVelo/Routenliste_" .. lang
local evx = mw.loadData(Liste)
local ev = {
{"Atlantikküsten-Route",1,8186,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-1]","[[Nordkap]] (EV7, EV11) – [[Norwegen#Küste|norwegische Küste]] – [[Trondheim]] (EV3) – [[Bergen (Norwegen)|Bergen]] (EV12) – [[Aberdeen]] (EV12) – [[Inverness]] (EV12) – [[Glasgow]] – [[Stranraer]] – [[Belfast]] – [[Galway]] (EV2) – [[Cork]] – [[Rosslare]] – [[Fishguard]] – [[Bristol]] (EV2) – [[Plymouth]] – [[Roscoff]] (EV4) – [[Nantes]] (EV6) – [[La Rochelle]] – [[Pamplona]] (EV3) – [[Salamanca]] – [[Sagres]]","Norwegen, Vereinigtes Königreich, Irland, Frankreich, Spanien, Portugal"},
{"Hauptstadt-Route",2,5500,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-2]","[[Galway]] (EV1) – [[Dublin]] – [[Holyhead]] – [[Bristol]] (EV1) – [[London]] (EV5) – [[Harwich]] – [[Rotterdam]] (EV12, EV19) – [[Den Haag]] – [[Münster]] (EV3) – [[Berlin]] (EV7) – [[Posen]] (EV9) – [[Warschau]] (EV11) – [[Minsk]] – [[Moskau]]","IRL, GB-UKM, Niederlande, Deutschland (dort: [[Europaroute (D3)|Europaroute D3]]), Polen, Weißrussland, Russland"},
{"Pilgerroute",3,5122,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-3]","[[Santiago de Compostela]] – [[León]] – [[Pamplona]] (EV1) – [[Bordeaux]] – [[Tours]] (EV6) – [[Orléans]] (EV6) – [[Paris]] – [[Namur]] (EV5, EV19) – [[Aachen]] – [[Köln]] (EV15) – Münster (EV2) – [[Hamburg]] (EV12) – [[Flensburg]] – [[Viborg]] – [[Frederikshavn]] (EV12) – [[Göteborg]] (EV12) – [[Oslo]] – [[Røros]] – [[Trondheim]](EV1)","Spanien, Frankreich, Belgien, Deutschland, Dänemark, Schweden, Norwegen"},
{"Mitteleuropa-Route",4,4000,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-4]","[[Roscoff]] (EV1) – französische Atlantikküste – [[Le Havre]] – [[Calais]] (EV5) – [[Middelburg]] – [[Düsseldorf]] (EV15) – [[Bonn]] (EV15) – [[Frankfurt am Main]] – [[Prag]] (EV7) – [[Brünn]] (EV9) – [[Krakau]] (EV11) – [[Lwiw]] – [[Kiew]]","Frankreich, Belgien, Deutschland, Tschechien, Polen, Ukraine"},
{"Via Romea Francigena",5,3900,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-5]","London (EV2) – [[Canterbury]] – Calais (EV4) – [[Brüssel]] – [[Namur]] (EV3, EV19) – [[Luxemburg (Stadt)|Luxemburg]] – [[Saarbrücken]] – [[Straßburg]] (EV15) – [[Basel]] (EV6) – [[Luzern]] – [[Andermatt]] (EV15, EV17) – [[Mailand]] – [[Piacenza]] (EV8) – [[Parma]] – [[Florenz]] (EV7) – [[Siena]] – [[Rom]] (EV7) – [[Brindisi]]","Vereinigtes Königreich, Frankreich, Belgien, Luxemburg, Deutschland, Schweiz, Italien"},
{"Atlantik - Schwarzes Meer",6,4448,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-6] [http://de.eurovelo6-france.com/]","[[Nantes]] (EV1) – [[Tours]](EV3) – [[Orléans]] (EV3) – [[Nevers]] – [[Chalon-sur-Saône]] – [[Basel]] (EV5) – [[Ulm]] – [[Passau]] – [[Linz]] – [[Ybbs an der Donau|Ybbs]] (EV7) – [[Wien]] (EV9) – [[Bratislava]] – [[Budapest]] – [[Belgrad]] (EV11) – [[Bukarest]] – [[Constanța]]","Frankreich, Schweiz, Deutschland, Österreich, Slowakei, Ungarn, Serbien, Rumänien"},
{"Sonnen-Route",7,7409,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-7]","[[Nordkap]] (EV1, EV11) – [[Haparanda]] (EV10) – [[Sundsvall]] (EV10) – [[Svealand|Mittelschweden]] – [[Kopenhagen]] (EV10) – [[Gedser]] – [[Rostock]] (EV10) – [[Berlin]] (EV2) – [[Prag]] (EV4) – [[Ybbs an der Donau|Ybbs]] (EV6) – [[Salzburg]] – [[Mantua]] (EV8) – [[Bologna]] – [[Florenz]] (EV5) – [[Rom]] (EV5) – [[Neapel]] – [[Syracus]] – [[Malta]]","Norwegen, Schweden, Dänemark, Deutschland, Tschechien, Österreich, Italien, Malta"},
{"Mittelmeer-Route",8,5888,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-8]","[[Cádiz]] – [[Málaga]] – [[Almería]] – [[Valencia]] – [[Barcelona]] – [[Avignon]] (EV17) – [[Monaco]] – [[Piacenza]] (EV5) – [[Mantua]] (EV7) – [[Ferrara]] – [[Venedig]] – [[Triest]] (EV9) – [[Rijeka]] – [[Split]] – [[Dubrovnik]] – [[Tirana]] – [[Patras]] – [[Athen]] (EV11) – [[Nikosia]]","Spanien, Frankreich, Monaco, Italien, Slowenien, Kroatien, Bosnien und Herzegowina, Montenegro, Albanien, Griechenland, Zypern"},
{"Baltisch-Adriatische Route",9,1930,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-9]","[[Danzig]] (EV10) – [[Posen]] (EV2) – [[Breslau]] – [[Olmütz]] – [[Brünn]] (EV4) – [[Wien]] (EV6) – [[Maribor]] – [[Ljubljana]] – [[Triest]] (EV8) – [[Pula]]","Polen, Tschechien, Österreich, Slowenien, Italien, Kroatien"},
{"Ostseeküsten-Route",10,7980,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-10]","[[Sankt Petersburg]] – [[Helsinki]] (EV11) – [[Vaasa]] – [[Oulu]] – [[Haparanda]] (EV7) – [[Sundsvall]] (EV7) – [[Stockholm]] – [[Ystad]] – [[Malmö]] – [[Kopenhagen]] (EV7) – [[Odense]] – [[Rostock]] (EV7) – [[Danzig]] (EV9) – [[Kaliningrad]] – [[Riga]] – [[Tallinn]] (EV11) – [[Sankt Petersburg]]","RUS, Finnland, Schweden, Dänemark, Deutschland, Polen, Litauen, Lettland, Estland"},
{"Osteuropa-Route",11,5984,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-11]","[[Nordkapp|Nordkap]] (EV1, EV7) – [[Finnische Seenplatte]] – [[Helsinki]] (EV10) – [[Tallinn]] (EV10) – [[Tartu]] – [[Vilnius]] – [[Warschau]] (EV2) – [[Krakau]] (EV4) – [[Kosice]] – [[Belgrad]] (EV6) – [[Skopje]] – [[Thessaloniki]] – [[Athen]] (EV8)","Norwegen, Finnland, Estland, Lettland, Litauen, Polen, Slowakei, Ungarn, Serbien, Nordmazedonien, Griechenland"},
{"Nordseeküsten-Route",12,5932,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-12] [http://www.northsea-cycle.com/]","Bergen (EV1) – Stavanger – Kristiansand – [[Göteborg]] (EV3) – [[Varberg]] – [[Grenaa]] – [[Frederikshavn]] (EV3) – [[Hirtshals]] – [[Esbjerg]] – [[Hamburg]] (EV3) – [[Den Haag]] (EV2) – [[Rotterdam]] (EV19) – [[Harwich]] (EV2) – [[Kingston upon Hull|Hull]] – [[Newcastle upon Tyne|Newcastle]] – [[Edinburgh]] – [[Aberdeen]] (EV1) – [[Inverness]] (EV1) – [[Thurso]] – [[Orkney]] – [[Shetland]] – [[Bergen (Norwegen)|Bergen]] (EV1)","Norwegen, Schweden, Dänemark, Deutschland, Niederlande, Vereinigtes Königreich"},
{"Iron Curtain Trail",13,9000,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-13] [https://www.michael-cramer.eu/rund-ums-rad/euroveloroute-13/]","[[Kirkenes]] – [[Inari (Ort)|Inari]] – [[Virolahti]] (EV10) – [[Sankt Petersburg]] – [[Tallinn]] (EV11) – [[Riga]] – [[Klaipėda]] – [[Kaliningrad|Königsberg]] – [[Danzig]] (EV9) – [[Warnemünde]] (EV7) – [[Ilsenburg]] (EV2) – [[Eisenach]] – [[Mödlareuth]] – [[Cheb|Eger]] (EV4) – [[Waldmünchen]] – [[České Velenice]] (EV7) – [[Břeclav]] (EV9) – [[Sopron]] – [[Beli Manastir]] (EV6) – [[Szeged]] – [[Moldova Nouă|Moldova]] Veche – [[Pirot]] – [[Tran]] – [[Berovo]] – [[Svilengrad]] – [[Edirne]] – [[Resowo]] ''am [[Schwarzes Meer|Schwarzen Meer]]''","Norwegen, Finnland, RUS, Estland, Lettland, Litauen, Polen, Deutschland, Tschechien, Österreich, Slowakei, Ungarn, Slowenien, Kroatien, Rumänien, Serbien, Bulgarien, Nordmazedonien, Griechenland, Türkei"},
{unk,14,unk,unk,unk,unk},
{"Rheinradweg",15,1320,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-15] [https://de.eurovelo.com/news/2019-05-03_spring-fever-along-the-eurovelo-15-rhine-cycle-route]","[[Andermatt]] (EV5, EV17) – [[Chur]] – [[Schaffhausen]] – [[Basel]] (EV6) – [[Huningue]] – [[Neuf-Brisach]] – [[Straßburg]] (EV5) – [[Lauterbourg]] – [[Karlsruhe]] – [[Ludwigshafen]] – [[Mannheim]] – [[Mainz]] – [[Wiesbaden]] – [[Bingen]] – [[Koblenz]] – [[Bonn]] – [[Köln]] – [[Düsseldorf]] – [[Duisburg]] – [[Xanten]] – [[Arnhem]] (EV19) – [[Utrecht]] – [[Rotterdam]] (EV2, EV12, EV15)","Schweiz, Frankreich, Deutschland, Niederlande"},
{unk,16,unk,unk,unk,unk},
{"Rhone Radweg",17,1160,unk,"[http://www.eurovelo.com/de/eurovelos/eurovelo-17] [https://www.schweizmobil.ch/de/veloland/route-01.html]","[[Andermatt]] (EV5, EV15) – [[Furkapass]] – [[Bezirk Goms|Goms]] – [[Brig]] – [[Siders]] – [[Sitten]] – [[Vevey]] – [[Montreux]] – [[Lausanne]] – [[Nyon]] – [[Genf]] – [[Lyon]] – [[Valence]] – [[Avignon]] (EV8)<br />östliches Ende: [[Avignon]] (EV8) – [[Arles]] (EV8) – [[Port-Saint-Louis-du-Rhône]]<br />westliches Ende: [[Avignon]] (EV8) – [[Nîmes]] (EV8) – [[Palavas-les-Flots]]","Schweiz (dort: [[Rhone-Route|Rhone-Route, Veloroute 1]]), Frankreich"},
{unk,18,unk,unk,unk,unk},
{"Maas-Radweg",19,1152,2019-03-08,"[http://maasradweg.eu/] [https://de.eurovelo.com/ev19]","[[Plateau von Langres|Langres-Plateau]] – [[Pagny-sur-Meuse]] – [[Namur]] (EV3, EV19) – [[Lüttich]] – [[Roermond]] – [[Arnheim]] (EV15) – [[Rotterdam]] (EV2, EV12, EV15), [[Hoek van Holland]]","Frankreich, Belgien, Niederlande"},
{unk,20,unk,unk,unk,unk}
}
ev[0] = {"EuroVelo",0,78911,1998-01-01,"https://de.eurovelo.com/",unk,unk} -- Extrawurst, da es 0 im Array nicht gibt

function ups1(a,s,z) -- wandelt in Versalien und extrahiert erstes (oder 's'-tes) Zeichen oder Anzahl z
	return string.sub(string.upper(a), s or 1, z or 1)
end

local function istroute(val) -- Prüft, ob es eine definierte Route ist (14,16,18 und über 19 sind es derzeit nicht
	val = tonumber(val)
	for i = 1, #liste do
		if liste[i] == val then return val end
	end
	return 0 -- default = [[EuroVelo]]
end

local function nowrap(s) -- Verhindert Umbruch der Darstellung
	if umbruch then return s end
	s = '<span style="white-space:nowrap;">' .. s .. '</span>'
	return s
end

local function formatiere(f, nr, lnk) -- Setzt die Textdarstellung entsprechend Parameter zusammen
	if string.len(f or '') > 1 then r = f else f = ups1(f)
		if f == '#' then ll = nil
			elseif f == 'K' or f == 'S' then r = lnk or 'EV' .. nr -- kurz (short), z.B. 'EV8'
			elseif f == 'M' then r = lnk or 'EuroVelo&nbsp;' .. nr -- mittel (medium), z.B. 'EuroVelo 8'
			elseif f == 'L' then r = lnk or ev[nr][1] -- lang (long), z.B. 'Mittelmeer-Route'
			else r = ev[nr][1] .. ' (EV' .. nr ..')' -- default z.B. 'Mittelmeer-Route (EV8)'
		end -- if f == ...
	end -- if string ...
	return r
end

local function information(nr, wert) -- extrahiert die Infos aus der Tabelle ev entsprechend Parameter. ev={"Name",nr,km,datum,www,strecke,Länder}, ...
	i = ups1(wert) --1. Buchstaben extrahieren
	d = ups1(wert,2) --2. Buchstaben extrahieren
	local l = 1
	if i == 'K' then j = 3 -- Kilometer
		elseif i == 'D' then j = 4 -- Startdatum
		elseif i == 'U' then j = 5 -- URI
		elseif i == 'R' then j = 6 -- Route
		else j = 7 -- durchfahrene Staaten
	end
	r = ev[nr][j] or "- '''unbekannt''' -"
	return r
end

function p.f(frame) -- Startfunktion: Parameterübernahme und Zusammensetzung des darzustellenden Strings

	frame = frame:getParent() -- 'durchgereichte Parameter sammeln

	-- erst mal die übergebenen Parameter aufrufen
	for key, wert in pairs(frame.args) do
		key=ups1(key) -- hier auf einen Großbuchstaben verkürzen
		if key == "1" or key == 'N' then nrc = wert or '0'; nr = istroute(nrc)
			elseif key == "2" or key == 'F' then fmt = formatiere(wert, nr, lnk) -- format (ggf. Text)
			elseif key == "3" or key == 'P' then logopx = wert -- pixel
			elseif key == 'L' then lnk = wert -- link abweichend von aus 'N'
			elseif key == 'Z' or key == 'T' then lnk = wert; fmt = wert -- Ziel, auch Anzeige
			elseif key == 'S' then srt = wert -- sort
			elseif key == 'W' or key == 'U' then umbruch = wert -- wrap bzw. Umbruch
			elseif key == 'I' then return information(nr, wert) -- Für die Erweiterung Info
			else nrc ='0'; nr = 0
		end -- if key ...
	end -- for key ...

	-- Link erstellen
	link = lnk or ev[nr][c] .. ' (EV' .. nrc .. ')'; logolink = link
	logopx = logopx or logopxdefault -- Defaultvorgabe
	logo = ("[[File:EV%d-Logo.svg|%spx|class=noviewer|alt=|link=%s|%s]]"):format(nr, logopx, logolink, logolink)

	-- Verarbeitung, sichtbaren String zusammenbasteln
	if string.len(fmt or '') > 1 then text = fmt
		else text = ev[nr][c] or unk
			if c > 0 then text = text ..' (EV' .. nrc ..')' end -- default z.B. 'Mittelmeer-Route (EV8)'
	end -- if string.len ...
	if nr == 0 and text then link = lnk or ev[0][1]; text = fmt or ev[0][1] end

	-- Textdisplay und link zusammensetzen
	if string.len(text or '') > 1 and ll then 	lk = ' [[' .. link .. '|' .. text .. ']]' else lk = '' end
	
	--[[ Falls Sortierung vorgegeben. Eleganter wäre eine Lösung mit 'data-sort-value=' .. srt .. '|', das könnte aber zu Problemen führen, wenn es im Fließtext außerhalb von Tabellen steht.--]]
	if srt then sort = ('<span style="display:none;">' .. srt .. '</span>') else sort = '' end

	 return sort .. nowrap(logo .. lk)

end -- function p.f(frame)

return p