Modul:Vorlage:Infobox Sendeanlage/VorlageDokumentation

aus Wikipedia, der freien Enzyklopädie
--	Weitere Parameter zur Aufzaelung
local WeitereAufzaehlung = {
	ZUGANG = { --	Werte fuer 'Zugaenglichkeit', 'ZUGANG'
		ja = { { "ja" }, { "Sendeanlage öffentlich zugänglich" }, KatAnzeige = false },
		jein = { { "jein" }, { "Sendeanlage nur nach Voranmeldung zugänglich" }, KatAnzeige = false },
		nein = { { "nein" }, { "Sendeanlage nicht öffentlich zugänglich" }, KatAnzeige = false }
	},
	SONDER = { --	Werte fuer 'Alternative Anzeige', 'SONDER'
		Nebenbox = { { "Nebenbox" }, { "Die Infobox wird als Nebenbox angezeigt. Dadurch entfallen die Kategorie-Sortierung und die Lagekarte. Die Koordinaten werden in einer Zeile der Infobox angezeigt anstatt im Artikelkopf." }, KatAnzeige = false },
		Weiterleitung = { { "Weiterleitung" }, { "Es wird der Link zu den Koordinaten mittels der [[Vorlage:Coordinate]] im Kopf einer Weiterleitung erzeugt. Des Weiteren erfolgt die Kategorie-Sortierung entsprechend derer der Infobox." }, KatAnzeige = false }
	}
}

local Ersatz = {
	{
		"das Bauwerk",
		Sendeanlage = "die Sendeanlage",
		Sendeturm = "der Sendeturm",
		Sendemast = "der Sendemast",
		Aussichtsturm = "der Aussichtsturm",
		Fernsehturm = "der Fernsehturm"
	},
	{
		"des Bauwerkes",
		Sendeanlage = "der Sendeanlage",
		Sendeturm = "des Sendeturmes",
		Sendemast = "des Sendemastes",
		Aussichtsturm = "des Aussichtsturmes",
		Fernsehturm = "des Fernsehturmes"
	},
	{
		"dem Bauwerk",
		Sendeanlage = "der Sendeanlage",
		Sendeturm = "dem Sendeturm",
		Sendemast = "dem Sendemast",
		Aussichtsturm = "dem Aussichtsturm",
		Fernsehturm = "dem Fernsehturm"
	},
	{
		"das Bauwerk",
		Sendeanlage = "die Sendeanlage",
		Sendeturm = "den Sendeturm",
		Sendemast = "den Sendemast",
		Aussichtsturm = "den Aussichtsturm",
		Fernsehturm = "den Fernsehturm"
	},
	EZ = {
		"Bauwerk",
		Sendeanlage = "Sendeanlage",
		Sendeturm = "Sendeturm",
		Sendemast = "Sendemast",
		Aussichtsturm = "Aussichtsturm",
		Fernsehturm = "Fernsehturm"
	},
	MZ = {
		"Bauwerke",
		Sendeanlage = "Sendeanlagen",
		Sendeturm = "Sendetürme",
		Sendemast = "Sendemasten",
		Aussichtsturm = "Aussichtstürme",
		Fernsehturm = "Fernsehtürme"
	}
}

--	Anker
function Anker( Text, ID1, ID2, ID3 )
	local AnkerID = { tostring( ID1 ), tostring( ID2 ), ID3, Text = Text }
	AnkerID.Text = AnkerID.Text or "(Text fehlt)"
	AnkerID[3] = AnkerID[3] or ""
	AnkerID.div =  mw.html.create( "div" )
		:attr( "id", AnkerID[1] .. AnkerID[2] .. AnkerID[3] )
		:wikitext( tostring( AnkerID.Text ) )
	
	return tostring( AnkerID.div )
end

local p = { }
--	Zusammenstellung Dokumentation
function p.DokuVorlage( DSZusatz, DatenX, frame )
	local Daten = DatenX
	local JSON = mw.getCurrentFrame():getParent().args.JSON or frame.args.JSON or ""
	local TEMP = {
		Typ = frame.args[1] or string.sub( DSZusatz.SR, 9 ),
		Ersatz = { }
	}
	if TEMP.Typ == "" then TEMP.Typ = "unbekannt" end
	if not Ersatz[1][TEMP.Typ] then TEMP.Typ = 1 end
	
	--	Ersatz für $
	for ErsatzK, ErsatzV in pairs( Ersatz ) do
		TEMP.Ersatz[ErsatzK] = ErsatzV[TEMP.Typ]
	end
	TEMP.Ersatz.Name = DSZusatz.SR
	for SEk, SEv in pairs( TEMP.Ersatz ) do
		TEMP.ETX = "$" .. tostring( SEk )
		JSON = string.gsub( JSON, TEMP.ETX, SEv )
	end
	
	--	Ausgabe TemplateData
	local Doku = ""
	if JSON ~= "" then Doku = frame:expandTemplate{ title = "TemplateData", args = { JSON = JSON } } end
	
	--	Datenauswertung
	TEMP.Status = false
	if JSON ~= "" then TEMP.Status = pcall( mw.text.jsonDecode, JSON ) end
	if TEMP.Status == false then
		TEMP.Fehlertext = mw.html.create( "span" )
			:attr( "id", "Fehler_Meldung" )
			:attr( "class", "error" )
			:css( "font-weight", "bold" )
			:css( "font-size", "120%" )
			:wikitext( "Aufgrund eines Fehlers, augenscheinlich bei der Dateneingabe in der [[Vorlage:Infobox Sendeanlage/Doku]], können die daraus generierten Daten zur Vorlagendokumentation nicht angezeigt werden!" )
		Doku = Doku .. "\n\n" .. frame:expandTemplate{ title = "Achtung", args = { tostring( TEMP.Fehlertext ), Textausrichtung = "center", Hintergrund = "#fffbee" } }
	else
		--	Einzelzuweisung
		table.insert( Daten, { Name = "CAT_TYP" } )
		table.insert( Daten, { Name = "CAT_NAME" } )
		table.insert( Daten, { Name = "CAT_STADT" } )
		for WAk, WAv in pairs( WeitereAufzaehlung ) do
			DSZusatz.Aufzaehlung[WAk] = WAv
		end
		DSZusatz.Aufzaehlung.CAT_TYP = { }
		for CT1k, CT1v in pairs( DSZusatz.Bezeichner ) do
			if type( CT1k ) == "string" then
				DSZusatz.Aufzaehlung.CAT_TYP[CT1k] = { { CT1k }, { tostring( CT1v ) }, { tostring( DSZusatz.Geo[1][1][1][1] ) }, Geo = DSZusatz.Geo[1][1][1][2] }
				if DSZusatz.Geo[CT1k] then
					DSZusatz.Geo[CT1k][1] = DSZusatz.Geo[CT1k][1] or { }
					DSZusatz.Geo[CT1k][1][1] = DSZusatz.Geo[CT1k][1][1] or { }
					if (DSZusatz.Geo[CT1k][1][1][1] ~= nil and DSZusatz.Geo[CT1k][1][1][1] ~= "") then
						DSZusatz.Aufzaehlung.CAT_TYP[CT1k][3][1] = tostring( DSZusatz.Geo[CT1k][1][1][1] )
						DSZusatz.Aufzaehlung.CAT_TYP[CT1k]["Geo"] = DSZusatz.Geo[CT1k][1][1][2]
						if DSZusatz.Geo[CT1k][1][1][3] == false then DSZusatz.Aufzaehlung.CAT_TYP[CT1k]["Geo"] = nil end
					end
				end
			end
		end
		
		--	Zuordnung 'JSONDaten' zu 'LokalDaten'
		local JSONDaten =  mw.text.jsonDecode( JSON )
		local LokalDaten = { }
		for LDk, LDv in pairs( Daten ) do
			for LPk, LPv in pairs( JSONDaten.params ) do
				if LDv.Name == LPk then
					table.insert( LokalDaten, LPv )
					LokalDaten[#LokalDaten]["Name"] = LDv.Name
					LokalDaten[#LokalDaten]["Layout"] = { true }
					for LO1k, LO1v in pairs( DSZusatz.Layout ) do
						if type( LO1k ) == "string" then
							for LO2k, LO2v in pairs( LO1v ) do
								if LO2v == LokalDaten[#LokalDaten]["Name"] then LokalDaten[#LokalDaten]["Layout"][DSZusatz.Bezeichner[LO1k]] = false end
							end
						end
					end
				end
			end
		end
		
		--	Kopiervorlagen
		TEMP.KV = { TEMP.Typ }
		if TEMP.KV[1] == 1 then TEMP.KV[1] = "Sendeanlage" end
		if TEMP.KV[1] == "Sendeanlage" then
			TEMP.KV[2] = "Sendeturm"
			TEMP.KV[3] = "Sendemast"
			TEMP.KV[4] = "Fernsehturm"
		end
		TEMP.keine = {
			Sendemast = { "T_HOCH_AUS", "T_HOCH_RES", "T_A_STILL" }
		}
		
		Doku = Doku .. "\n\n== Kopiervorlage"
		if #TEMP.KV > 1 then Doku = Doku .. "n" end
		Doku = Doku .. " ==\n"
		for KVk, KVv in pairs( TEMP.KV ) do
			
			--	Zuordnung 'LokalDaten' zu 'EinzelDaten' (Kopiervorlage)
			TEMP.EinzelDaten = { }
			for EVk, EVv in pairs( LokalDaten ) do
				if (EVv.Layout[KVv] ~= false or EVv.Name == "NS" or EVv.Name == "EW") then
					table.insert( TEMP.EinzelDaten, EVv )
				end
			end
			
			--	Zusammenstellung Daten Kopiervorlagen
			TEMP.KText = "\n{{Infobox " .. tostring( TEMP.KV[1] )
			for EVEk, EVEv in pairs( TEMP.EinzelDaten ) do
				TEMP.kA = false
				if TEMP.keine[KVv] then
					for keineK, keineV in pairs( TEMP.keine[KVv] ) do
						if keineV == EVEv.Name then TEMP.kA = true end
					end
				end
				if (TEMP.kA == false and (EVEv.suggested == true or EVEv.required == true)) then
					TEMP.KText = TEMP.KText .. "\n| " .. tostring( EVEv.Name )
					for iVk = string.len( EVEv.Name ), 9, 1 do
						TEMP.KText = TEMP.KText .. " "
					end
					TEMP.KText = TEMP.KText .. " = "
					if EVEv.autovalue then
						if (KVv == "Fernsehturm" and EVEv.Name == "VERW") then TEMP.KText = TEMP.KText .. "Fernsehturm/" end
						TEMP.KText = TEMP.KText .. "<!-- " .. tostring( EVEv.autovalue ) .. " -->"
					end
					if EVEv.Name == "CAT_TYP" then
						for CTk, CTv in pairs( DSZusatz.Bezeichner ) do
							if CTv == KVv then TEMP.KText = TEMP.KText .. tostring( CTk ) end
						end
					end
				end
			end
			TEMP.KText = TEMP.KText .. "\n}}\n"
			
			--	Darstellung Daten Kopiervorlagen
			TEMP.pre = mw.html.create( "pre" )
				:css( "white-space", "pre-wrap" )
				:css( "overflow", "auto" )
				:wikitext( TEMP.KText )
			if #TEMP.KV > 1 then
				TEMP.div = mw.html.create( "div" )
					:css( "float", "left" )
					:css( "width", "46%" )
					:css( "margin-right", "1em" )
					:wikitext( "\n\n=== Kopiervorlage " .. tostring( KVv ) .. " ===\n" .. tostring( TEMP.pre ) )
			else
				TEMP.div = "\n\n=== Kopiervorlage " .. tostring( KVv ) .. " ===\n" .. tostring( TEMP.pre )
			end
			Doku  = Doku .. tostring( TEMP.div )
		end
		TEMP.div = mw.html.create( "div" )
			:css( "clear", "left" )
		if #TEMP.KV > 1 then Doku  = Doku .. tostring( TEMP.div ) end
		TEMP.pre = mw.html.create( "pre" )
			:css( "white-space", "pre-wrap" )
			:css( "overflow", "auto" )
			:wikitext( "{{Infobox " .. tostring( TEMP.KV[1] ) .. "| SONDER = Weiterleitung| ZIEL = \'\'Ziel der Weiterleitung\'\' }}" )
		Doku  = Doku .. "\n\n=== Vorlage als Weiterleitung ===\n" .. tostring( TEMP.pre )
		
		--	Datenverarbeitung Parameter-Details
		TEMP.EDaten = { }
		if (TEMP.Typ == 1 or TEMP.Typ == "Sendeanlage") then
			TEMP.EDaten = LokalDaten
		else
			for DVEk, DVEv in pairs( LokalDaten ) do
				if DVEv.Layout[TEMP.Typ] ~= false then
					table.insert( TEMP.EDaten, DVEv )
				end
			end
		end
		TEMP.EinzelDaten = { }
		for DVPDk, DVPDv in pairs( TEMP.EDaten ) do
			for DVAk, DVAv in pairs( DSZusatz.Aufzaehlung ) do
				if (DVPDv.Name == DVAk and DVPDv.deprecated ~= true) then table.insert( TEMP.EinzelDaten, DVPDv ) end
			end
		end
		TEMP.Liste = { }
		for EDLIk, EDLIv in pairs( TEMP.EinzelDaten ) do
			TEMP.Sort = { }
			for LISOk, LISOv in pairs( DSZusatz.Aufzaehlung[EDLIv.Name] ) do
				TEMP.tf = true
				LISOv[1] = LISOv[1] or { }
				for LISxK, LISxV in pairs( LISOv[1] ) do
					if type( LISxK ) == "string" then
						if (DSZusatz.Bezeichner[LISxK] == TEMP.Typ and LISxV == false) then TEMP.tf = false end
					end
				end
				if TEMP.tf == true then table.insert( TEMP.Sort, LISOk ) end
			end
			table.sort( TEMP.Sort )
			TEMP.Liste[EDLIk] = {
				Name = tostring( EDLIv.Name ),
				Label = tostring( EDLIv.label ),
				Sortierung = TEMP.Sort,
				args = { }
			}
			for LIA1k, LIA1v in pairs( TEMP.Sort ) do
				DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2] = DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2] or { }
				DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3] = DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3] or { }
				TEMP.Liste[EDLIk]["args"][LIA1k] = {
					Name = LIA1v,
					Label = DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2][1] or "",
					Kategorie = DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3][1] or "",
					KatAnzeige = DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v]["KatAnzeige"]
				}
				for LIXk, LIXv in pairs( DSZusatz.Bezeichner ) do
					if (type( TEMP.Typ ) == "string" and TEMP.Typ == LIXv ) then
						TEMP.Liste[EDLIk]["args"][LIA1k]["Label"] =  DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2][LIXk] or TEMP.Liste[EDLIk]["args"][LIA1k]["Label"]
						TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] =  DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3][LIXk] or TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"]
					end
				end
				if TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] ~= "" then TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] = "[[:Kategorie:" .. TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] .. "]]" end
				if (type( TEMP.Typ ) == "number" or TEMP.Typ == "Sendeanlage" ) then
					TEMP.LIZ = { }
					for LIA2k, LIA2v in pairs( DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2] ) do
						if type( LIA2k ) == "string" then table.insert( TEMP.LIZ, LIA2k ) end
					end
					if #TEMP.LIZ > 1 then
						TEMP.Liste[EDLIk]["args"][LIA1k]["Label"] = "\n{|\n|-\n| style=\"padding-right:.25em;\" | \'\'Voreinstellung\'\':\n| " .. tostring( DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2][1] )
						for LIA3k, LIA3v in pairs( TEMP.LIZ ) do
							TEMP.Liste[EDLIk]["args"][LIA1k]["Label"] = TEMP.Liste[EDLIk]["args"][LIA1k]["Label"] .. "\n|-\n| style=\"padding-right:.25em;\" | " .. tostring( DSZusatz.Bezeichner[LIA3v] ) .. ":\n| " .. tostring( DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][2][LIA3v] )
						end
						TEMP.Liste[EDLIk]["args"][LIA1k]["Label"] = TEMP.Liste[EDLIk]["args"][LIA1k]["Label"] .. "\n|}"
					end
					TEMP.LIZ = { }
					for LIA4k, LIA4v in pairs( DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3] ) do
						if type( LIA4k ) == "string" then table.insert( TEMP.LIZ, LIA4k ) end
					end
					if #TEMP.LIZ > 1 then
						TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] = "\n{|\n|-\n| style=\"padding-right:.25em;\" | \'\'Voreinstellung\'\':\n| [[:Kategorie:" .. tostring( DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3][1] ) .. "]]"
						for LIA5k, LIA5v in pairs( TEMP.LIZ ) do
							TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] = TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] .. "\n|-\n| style=\"padding-right:.25em;\" | " .. tostring( DSZusatz.Bezeichner[LIA5v] ) .. ":\n| [[:Kategorie:" .. tostring( DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v][3][LIA5v] ) .. "]]"
						end
						TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] = TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] .. "\n|}"
					end
				end
				if (DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v]["Geo"] == "GeoC" or DSZusatz.Aufzaehlung[EDLIv.Name][LIA1v]["Geo"] == "GeoN") then
					TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] = TEMP.Liste[EDLIk]["args"][LIA1k]["Kategorie"] .. " mit räumlicher Zuordnung durch den Parameter <code>REGION-ISO</code>"
				end
			end
		end
		
		--	Anzeige Parameter-Details
		Doku = Doku .. "\n\n== Parameter-Details ==\n: \'\'Hinweis: Die zugrundeliegenden Daten können unter [[" .. DSZusatz.ModulStamm .. "/Auflistung]] bearbeitet werden.\'\'\n{| class=\"wikitable centered\"\n! Wert !! Anzeige!! Kategorie"
		for DL1k, DL1v in pairs( TEMP.Liste ) do
			Doku = Doku .. "\n|-\n| colspan=\"3\" style=\"font-weight:bold; font-size:120%; text-align:center; background:#fff4d5;\" | " .. Anker( DL1v.Label .. " <small>(" .. tostring( DL1v.Name ) .. ")</small>", "PD_", DL1v.Name )
			for DL2k, DL2v in pairs( DL1v.args ) do
				Doku = Doku .. "\n|-"
				Doku = Doku .. "\n| " .. Anker( DL2v.Name, "PD_", DL1v.Name, DL2v.Name )
				Doku = Doku .. "\n| "
				if DL2v.KatAnzeige == false then Doku = Doku .. "colspan=\"2\" | " end
				Doku = Doku .. tostring( DL2v.Label )
				if DL2v.KatAnzeige ~= false then Doku = Doku .. "\n| " .. tostring( DL2v.Kategorie ) end
			end
		end
		Doku = Doku .. "\n|}"
		
		--	Datenquelle, nicht im Artikelnamensraum
		if (DSZusatz.SR == "Spielwiese" or DSZusatz.SU == "Spielwiese") then
			Doku = Doku .. "\n\n=== Datenquelle ===\n{| class=\"wikitable\"\n! Parameter !! Inhalt „AZv“"
			for AZk, AZv in pairs( TEMP.EinzelDaten ) do
				Doku  = Doku .. "\n|-\n| <code>" .. tostring( AZk ) .. "</code>\n\| "
				if type(AZv) == "table" then
					Doku  = Doku .. "\n{| class=\"wikitable\"\n! Parameter !! Inhalt „AZ2v“"
					for AZ2k, AZ2v in pairs( AZv ) do
						Doku  = Doku .. "\n|-\n| <code>" .. tostring( AZ2k ) .. "</code>\n\| "
						if type(AZ2v) == "table" then
							Doku  = Doku .. "\n{| class=\"wikitable\"\n! Parameter !! Inhalt „AZ3v“"
							for AZ3k, AZ3v in pairs( AZ2v ) do
								Doku  = Doku .. "\n|-\n| <code>" .. tostring( AZ3k ) .. "</code>\n\| "
								if type(AZ3v) == "table" then
									Doku  = Doku .. "\n{| class=\"wikitable\"\n! Parameter !! Inhalt „AZ4v“"
									for AZ4k, AZ4v in pairs( AZ3v ) do
										Doku  = Doku .. "\n|-\n| <code>" .. tostring( AZ4k ) .. "</code>\n\| "
										Doku  = Doku .. "<code>" .. tostring( AZ4v ) .. "</code>"
										if type(AZ4v) ~= "string" then Doku  = Doku .. " (" .. type(AZ4v) .. ")" end
									end
									Doku  = Doku .. "\n|}"
								else
									Doku  = Doku .. "<code>" .. tostring( AZ3v ) .. "</code>"
									if type(AZ3v) ~= "string" then Doku  = Doku .. " (" .. type(AZ3v) .. ")" end
								end
							end
							Doku  = Doku .. "\n|}"
						else
							Doku  = Doku .. "<code>" .. tostring( AZ2v ) .. "</code>"
							if type(AZ2v) ~= "string" then Doku  = Doku .. " (" .. type(AZ2v) .. ")" end
						end
					end
					Doku  = Doku .. "\n|}"
				else
					Doku  = Doku .. "<code>" .. tostring( AZv ) .. "</code>"
					if type(AZv) ~= "string" then Doku  = Doku .. " (" .. type(AZv) .. ")" end
				end
			end
			Doku  = Doku .. "\n|}"
		end
	end

	return Doku
end

--	Zusammenstellung DatenDokumentation
function p.DokuDaten( DSZusatz, DatenX, frame )
	local Daten = DatenX
	local ListeParameter = { }
	local TabelleParameter = { }
	local istvorhanden = { }
	local TEMP = { }
	local Doku = ""
	
	--	Auslesung Daten
	for LD1k, LD1v in pairs( Daten ) do
		for LD2k, LD2v in pairs( LD1v ) do
			if (istvorhanden[tostring( LD2k )] ~= true) then
				table.insert( ListeParameter, tostring( LD2k ) )
				istvorhanden[tostring( LD2k )] = true
			end
		end
	end
	table.sort( ListeParameter )
	
	--	Parameterliste
	for LP1k, LP1v in pairs( ListeParameter ) do
		TabelleParameter[LP1k] = { Name = tostring( LP1v ) }
		TEMP.Inhalt = mw.getCurrentFrame():getParent().args[tostring( LP1v )] or frame.args[tostring( LP1v )] or "—"
		TEMP.Inhalt = string.gsub( TEMP.Inhalt, "$TabelleAnfang", "\n{| class =\"wikitable\"\n! Parameter !! Bemerkung" )
		TEMP.Inhalt = string.gsub( TEMP.Inhalt, "$TabelleEnde", "\n|}" )
		TEMP.Split = mw.text.split( TEMP.Inhalt, "/" )
		if #TEMP.Split > 1 then
			TEMP.Inhalt = "\n{| class =\"wikitable\"\n! Parameter !! Bemerkung\n|-\n|"
			for LP2k, LP2v in pairs( TEMP.Split ) do
				if LP2k == 1 then
					TEMP.Inhalt = TEMP.Inhalt .. " <code>" .. LP2v .. "</code>"
				else
					TEMP.Inhalt = TEMP.Inhalt .. "\n|"
					if LP2v ~= "-" then TEMP.Inhalt = TEMP.Inhalt .. " " end
					if TEMP.Split[LP2k-1] == "-" then
						TEMP.Inhalt = TEMP.Inhalt .. "<code>" .. LP2v .. "</code>"
					else
						TEMP.Inhalt = TEMP.Inhalt .. LP2v
					end
				end
			end
			TEMP.Inhalt = TEMP.Inhalt .. "\n|}"
		end
		TabelleParameter[LP1k]["Inhalt"] = tostring( TEMP.Inhalt )
	end
	
	--	Anzeige Parameter
	Doku = Doku .. "\n{| class =\"wikitable\"\n! Parameter !! Bemerkung\n|-"
	for AZP1k, AZP1v in pairs( TabelleParameter ) do
		if AZP1v.Inhalt ~= "kein" then
			if string.find( AZP1v.Inhalt, "$org" ) then
				AZP1v.Inhalt = string.gsub( AZP1v.Inhalt, "$org", "" )
				TEMP.Farbe = "efe"
			elseif AZP1v.Inhalt == "—" then
				TEMP.Farbe = "fee"
			else
				TEMP.Farbe = "ffe"
			end
			
			Doku = Doku .. "\n|-\n| style=\"background-color:#" .. tostring( TEMP.Farbe ) .. ";\" | <code>" .. AZP1v.Name .. "</code>\n| style=\"background-color:#" .. tostring( TEMP.Farbe )
			if AZP1v.Inhalt == "—" then Doku = Doku .. "; text-align:center" end
			Doku = Doku .. ";\" | " .. AZP1v.Inhalt
		end
	end
	Doku = Doku .. "\n|-\n| colspan=\"2\" | <div style=\"width:32px; height:18px; border:black 1px solid; background-color:#efe; float:left; margin-right:1em;\"></div> Parameter kann im [[" .. DSZusatz.ModulStamm .. "/Label]] angepasst werden."
	Doku = Doku .. "\n|-\n| colspan=\"2\" | <div style=\"width:32px; height:18px; border:black 1px solid; background-color:#ffe; float:left; margin-right:1em;\"></div> Parameter wird innerhalb des Moduls generiert."
	Doku = Doku .. "\n|-\n| colspan=\"2\" | <div style=\"width:32px; height:18px; border:black 1px solid; background-color:#fee; float:left; margin-right:1em;\"></div> Status nicht definiert"
	Doku = Doku .. "\n|}"
	
	return Doku
end

--	Zusammenstellung Tsbelle DokuZusatz
function p.DokuZusatz( DSZusatz, Daten, frame )
	local Doku, Sortierung, Beschreibung = "", { }, { }
	for DSSk, DSSv in pairs( DSZusatz ) do
		table.insert( Sortierung, tostring( DSSk ) )
	end
	table.sort( Sortierung )
	for DSVk, DSVv in pairs( Sortierung ) do
		Beschreibung[DSVk] = { Name = DSVv, Farbe = "" }
		Beschreibung[DSVk]["Label"] = mw.getCurrentFrame():getParent().args[DSVv] or frame.args[DSVv] or ""
		if Beschreibung[DSVk]["Label"] == "" then Beschreibung[DSVk]["Farbe"] = "style=\"background-color:#fee; | " end
	end
	Doku = Doku .. "\n{| class =\"wikitable\"\n! Parameter !! Beschreibung"
	for DSk, DSv in pairs( Beschreibung ) do
		Doku = Doku .. "\n|-\n| " .. DSv.Farbe .. "<code>" .. DSv.Name .. "</code>"
		Doku = Doku .. "\n| " .. DSv.Farbe .. DSv.Label
	end
	Doku = Doku .. "\n|}"
	
	return Doku
end

return p