Modul:LRR

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 17. Juli 2014 um 15:51 Uhr durch Cmuelle8 (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Dieses Modul ist Teil der Formatvorlage Radroutenliste

Lies Dir bitte vor der Verwendung die Anleitung dort durch. Insbesondere sollten die Vorlagen nur in Artikeln der Art Liste der Radrouten in .. verwendet werden. Statt Radrouten ist auch Radwanderrouten, Touristische Radrouten, und leider auch Radwanderwege, Radfernwege, Fernradwege, etc. gebräuchlich. Der Begriff Radweg ist mehrdeutig, siehe die BKL Radweg.

Dieses Modul transkludiert vorübergehend die folgenden Vorlagen:

Nachdem diese Vorlagen in Lua-Module übersetzt wurden, können die Transklusionen durch Funktionsaufrufe der dann entstandenen Module ersetzt werden.


local xp = {}

function cond( c, t, f )
	if c then return t else return f end
end

function xp.wikilink( frame )
	setmetatable(frame.args, {__index={sep=""}})
	local ret = ""
	local s, sep =
		frame.args[1] or frame.args.s,
		frame.args[2] or frame.args.sep

	for v in mw.text.gsplit( s, ", *" )
	do if #v > 0
		then if v:sub( 1, 1 ) == "!"
			then ret = ret .. v:sub( 2 ) .. sep
			else ret = ret .. "[[" .. v:gsub( "!", "|" ) .. "]]" .. sep
			end
		end
	end

	return cond( #ret > 0, ret:sub( 1, #ret - #sep ), ret )
end

function xp.title( frame )
	return "<div style=\"display:none\">this: " .. frame:getTitle() ..
		" parent: " .. frame:getParent():getTitle() ..
		" namespace: " .. mw.title.getCurrentTitle().nsText ..
		" fulltitle: " .. mw.title.getCurrentTitle().fullText ..
		"</div>"
end

function xp.row( frame )
	local a = {}
	local parms = "logo name nalt nsort von via bis km bt fc rk profil"

	-- lowercase argument names
	for k, v in pairs( frame:getParent().args )
	do a[k:lower()] = v
	end

	-- map alternative argument names
	a.nalt, a.km, a.bt, a.fc, a.rk =
		a.nalt or a.nameerg,
		a.km or a.laenge,
		a.bt or a.bahntrasse or a.bahndamm,
		a.fc or a.adfc or a.minkrit,
		a.rk or a.rundkurs

	-- assign nil parms the empty string
	for p in mw.text.gsplit(parms, " ", true)
	do if not a[p] then a[p] = "" end
	end

	-- fill-in defaults or potentially missing parts, wikilink strings
	if not a.lsize then a.lsize = "48x48px" end
	if #a.logo > 0 and not a.logo:find("[[", 1, true)
	then a.logo = "[[Datei:" .. a.logo .. "|" .. a.lsize .. "]]"
	end

	for p in mw.text.gsplit( "name nalt von via bis", " ", true )
	do a[p] = xp.wikilink{ args = { a[p], cond( p == "via", " ↔ ", ", " ) } }
	end

	if #a.nalt > 0 then a.nalt = "(" .. a.nalt .. ")" end
	if #a.nsort > 0 then a.nsort = "data-sort-value=\"" .. a.nsort .. "\"|" end
	if #a.km > 0 and not a.km:find("km") then a.km = a.km .. " km" end

	-- handle 'toggle' fields
	if a.fc:match("[jJyYtT1-9]")
	then a.fc = frame:expandTemplate{ title = "Ja-Feld", args = { "" } } ..
		"<big>" .. cond(a.fc:match("[1-9]"), a.fc, "") .. "&#9733;</big>"
	elseif a.fc:match("[-nNfF0]")
	then a.fc = frame:expandTemplate{ title = "Nein-Feld", args = { "" } } ..
		"<big>&#10008;</big>"
	end

	if a.bt:match("[jJyYtT1]")
	then a.bt = frame:expandTemplate{ title = "Ja-Feld", args = { "" } } ..
		"[[Datei:BSicon_MBAHN.svg|20px|verweis=]]"
	elseif a.bt:match("[-nNfF0]")
	then a.bt = frame:expandTemplate{ title = "N/A-Feld", args = { } }
	end

	if a.rk:match("[jJyYtT1]")
	then a.rk = frame:expandTemplate{ title = "Ja-Feld", args = { "" } } ..
		"<big>&#9850;</big>"
	elseif a.rk:match("[-nNfF0]")
	then a.rk = frame:expandTemplate{ title = "N/A-Feld", args = { } }
	end

	return "|-\n" ..
		"|align=\"center\"| " .. a.logo ..
		"||" .. a.nsort .. " " .. a.name .. " " .. a.nalt ..
		"|| " .. a.von .. "|| " .. a.via .. "|| " .. a.bis .. "|| " .. a.km ..
		"|| " .. a.bt .. "|| " .. a.fc .. "|| " .. a.rk .. "|| " .. a.profil
end

return xp