Modul:Kopp

Vun Wiktionary

local export = {}

function export.show(frame)
	-- in der nächsten Zeile muss noch die Ausgabe der Vorlage, in der der Fehler ist, eingebunden werden, am bestem als Link, so dass man diese sofort aufrufen kann.
    local poscat = frame.args[1] or error("Fähler in Vörlaag: [[" .. frame:getParent():getTitle() ..  "]] Angaav vun Woortart fählt")
    local args = frame:getParent().args
	local lang = args["SPRAAK"] or ((mw.title.getCurrentTitle().nsText == "Vörlaag") and "und")
	-- Woort aus Seitennamen holen, soweit Anhang, aus dem Seitennamen herauslösen
	local woort = mw.title.getCurrentTitle().subpageText
	if lang ~= "MULT" and (require("Modul:languages").getByCode(lang):getType() == "reconstructed" or (require("Modul:languages").getByCode(lang):getType() ~= "appendix-constructed" and mw.title.getCurrentTitle().nsText == "Anhang")) then
		local idx = 1
		while idx do
			idx = woort:find( "/", idx) 
			if idx then
				woort = woort:sub(idx + 1)
				idx = 1
			end
		end
		woort = "*" .. woort
	end
	
	-- in-Variablen för all Woortarten
	local number = args["BEDÜDEN-NR"]
	local spraakutgave = args["SPRAAKUTGAVE"]
	local translit = args["tr"]; if translit == "" then translit = nil end
	local gender = args["GESLECHT"] if gender == nil or gender == "" or gender == "-" or gender == "TEXT" then gender = nil end
	local schrift = args["SCHRIFT"] if schrift == nil or schrift == "" or schrift == "-" or schrift == "TEXT" then schrift = nil end

	-- ut-Variablen för all Woortarten
	local Kopf = "__NOEDITSECTION__" .. '\n' -- gleich mal verhindern, dass man im Text Teile unter Überschriften editieren kann, da zu fehleranfällig
	local Kategorien = ""

	if poscat == "Adjektiv" then
		local komperativ = args["KOMPERATIV"] if komperativ == nil or komperativ == "" or komperativ == "-" or komperativ == "TEXT" then komperativ = nil end
		local superlativ = args["SUPERLATIV"] if superlativ == nil or superlativ == "" or superlativ == "-" or superlativ == "TEXT" then superlativ = nil end
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Adjektiven utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		if komperativ then
			if superlativ then
				Kopf = Kopf .. ":Stiegern (Komperativ/Superlativ):  " .. require("Modul:links").remove_multilink(komperativ) .."  / [[".. superlativ .. "]]" .. '\n'
			else
				Kopf = Kopf .. ":Stiegern (Komperativ): [[" .. komperativ .."]]" .. '\n'
			end
		end

	elseif poscat == "Adverb" then
		local komperativ = args["KOMPERATIV"] if komperativ == nil or komperativ == "" or komperativ == "-" or komperativ == "TEXT" then komperativ = nil end
		local superlativ = args["SUPERLATIV"] if superlativ == nil or superlativ == "" or superlativ == "-" or superlativ == "TEXT" then superlativ = nil end
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Adjektiven utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		if komperativ then
			if superlativ then
				Kopf = Kopf .. ":Stiegern (Komperativ/Superlativ):  " .. require("Modul:links").remove_multilink(komperativ) .."  / [[".. superlativ .. "]]" .. '\n'
			else
				Kopf = Kopf .. ":Stiegern (Komperativ): [[" .. komperativ .."]]" .. '\n'
			end
		end

	elseif poscat == "Artikel" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Suffixen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Egennaam" then
		local plural = args["MEHRTALL"]
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat) .. '\n' ..":([[Wiktionary:Över Substantiven (Allgemeen)|Substantiv]])" .. '\n'
		
		-- wiedere Informatschonen över Egennaams utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		if format_pluralzeile(plural) then
			Kopf = Kopf .. format_pluralzeile(plural)
		end

	elseif poscat == "Demonstrativpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Indefinitpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Interjekschoon" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Interrogativpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Konjunktschoon" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Kürken" then
		local satz = args["SATZ"] if satz == nil or satz == "" or satz == "-" or satz == "TEXT" then satz = nil end
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Snack utgeven
		if satz then
			Kopf = Kopf .. satz
		else
			Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		end

	elseif poscat == "Numeral" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Personalpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Possessivpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Präfix" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Präfixen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Präpositschoon" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Präpositschonen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Pronom" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Reflexivpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Relativpronom" then
		-- Spraak utgeven, wenn Bedüden < 2
			Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

elseif poscat == "Satz" then
		local satz = args["SATZ"] if satz == nil or satz == "" or satz == "-" or satz == "TEXT" then satz = nil end
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Sätz utgeven
		if satz then
			Kopf = Kopf .. satz
		else
			Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		end
		
	elseif poscat == "Schriftteken" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Schrifttekens utgeven / kein Aufruf von format_woortzeile weil Sonderformat (Buchstabe muss fett sein, keine Transkription)
		Kopf = Kopf .. ":"
		if number then
			Kopf = Kopf .. "<span style=\"color:blue;\"><sup>" .. number .. "</sup></span>"   -- fehlt noch <span style="color:blue;">  </span>
		end
		Kopf = Kopf .. "'''" .. woort .. "'''"

-- obsolet, aber noch nicht alle Artikel umgestellt
	elseif poscat == "Snack" then
		local satz = args["SATZ"] if satz == nil or satz == "" or satz == "-" or satz == "TEXT" then satz = nil end
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Snack utgeven
		if satz then
			Kopf = Kopf .. satz
		else
			Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		end

-- obsolet, aber noch nicht alle Artikel umgestellt
	elseif poscat == "Sprickwoort" then
		local satz = args["SATZ"] if satz == nil or satz == "" or satz == "-" or satz == "TEXT" then satz = nil end
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Sätz utgeven
		if satz then
			Kopf = Kopf .. satz
		else
			Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		end
		
	elseif poscat == "Spriekel" then
		local satz = args["SATZ"] if satz == nil or satz == "" or satz == "-" or satz == "TEXT" then satz = nil end
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Sätz utgeven
		if satz then
			Kopf = Kopf .. satz
		else
			Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		end
		
	elseif poscat == "Suffix" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Suffixen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Subjunktion" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Suffixen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

elseif poscat == "Substantiv" then
		local plural = args["MEHRTALL"]
		
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)
		-- wiedere Informatschonen över Substantiven utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		if format_pluralzeile(plural) then
			Kopf = Kopf .. format_pluralzeile(plural)
		end

	elseif poscat == "Toponym" then
		local plural = args["MEHRTALL"]
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat) .. '\n' ..":([[Wiktionary:Över Egennamen (Allgemeen)|Egennaam]])" .. '\n'.."::([[Wiktionary:Över Substantiven (Allgemeen)|Substantiv]])" .. '\n'
		
		-- wiedere Informatschonen över Toponymen utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 
		if format_pluralzeile(plural) then
			Kopf = Kopf .. format_pluralzeile(plural)
		end

	elseif poscat == "Verb" then
		-- Spraak utgeven, wenn Bedüden < 2
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Verben utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	elseif poscat == "Wörtel" then
		-- Spraak utgeven, wenn Bedüden < 2 oder Spraakutgave = +
		Kopf = Kopf .. format_spraakzeile(spraakutgave, lang, args, number)

		-- Woortaart utgeven
		Kopf = Kopf .. format_woortartzeile(poscat)

		-- wiedere Informatschonen över Wörteln utgeven
		Kopf = Kopf .. format_woortzeile(lang, woort, number, gender, translit, Kategorien) 

	end
	-- Kategorien maken
	Kategorien = categories(lang, args, require("Modul:Plural").Hol_Plural(poscat), gender, Kategorien)
	return
		Kopf .. Kategorien
end

-- Subroutinen

function format_spraakzeile(spraakutgave, lang, args, number)
	local spraak = ""
	if number == nil or number == "" or number == "1"  or spraakutgave == "+" then
		if lang == "MULT" then 
			local ipx = 1
			spraak = "== "
			if args[ipx] == "frr-a" or args[ipx] == "frr-f" or args[ipx] == "frr-ha" or args[ipx] == "frr-he" or args[ipx] == "frr-m" or args[ipx] == "frr-s" then
				spraak = spraak .. require("Modul:languages").getByCode("frr"):getCanonicalName() .. ": "
				while ipx  <= 30 do
					spraak = spraak .. require("Modul:languages").getByCode(args[ipx]):getKoppnaam()
					ipx = ipx + 1
					if args[ipx] == nil or args[ipx] == "" then
						break
					end
					spraak = spraak .. ", "
				end
			else
				while ipx  <= 30 do
					spraak = spraak .. require("Modul:languages").getByCode(args[ipx]):getCanonicalName()
					ipx = ipx + 1
					if args[ipx] == nil or args[ipx] == "" then
						break
					end
					spraak = spraak .. ", "
				end
			end
			spraak = spraak .. " ==" .. '\n'
		else
			spraak = "== " .. require("Modul:languages").getByCode(lang):getCanonicalName() .. " ==" .. '\n' -- mit  or error("De spraokkode \"" .. lang .. "\" is neet geldig.")  funktioniert es nicht, muss noch sehen, woran es liegt und was man da machen kann 
		end
		return spraak
	else
		return spraak
	end
end

function format_woortartzeile(poscat)
	return "=== [[Wiktionary:Över ".. require("Modul:Plural").Hol_Plural(poscat) .. " (Allgemeen)|" .. (poscat) .. "]] ===" .. '\n' -- noch einzubauen/zu ändern ist diese Verlinkung zu einer Verlinkung ins Wikitionary zu Över (Wortart) sowie die Pluralbildung für die Verlinkung ins Wiktionary
end

-- Woort holen und in Ausgabezeile, soweit Bedüden-Nr diese hochgestellt ausgeben, dann, falls angegeben noch Geschlecht in Klammern und kursiv ausgeben, dann in neuer Zeile gegebenenfalls die Transliteration

function format_woortzeile(lang, woort, number, gender, translit, Kategorien)
	local woortzeile = {}
	
	woortzeile = ":"
	
	-- Bedüden-Nr.
	if number then
		woortzeile = woortzeile .. "<span style=\"color:blue;\"><sup>" .. number .. "</sup></span>"   -- fehlt noch <span style="color:blue;">  </span>
	end
	-- Woort 
	woortzeile = woortzeile .. woort
	-- Geslecht
	if gender then
		woortzeile = woortzeile .. " (''" .. Hol_Geslecht_lang(gender) .. "'')"
	end
	
	-- Transkription
	if lang ~= "MULT" then
		local spraak = require("Modul:languages").getByCode(lang)
		if not schrift then
			local schrift = require("Modul:scripts").findBestScript(woort, spraak)
		end
--		woortzeile = woortzeile .. require("Modul:languages").lang:transliterate(require("Modul:languages").remove_links(woort), schrift)

--	else
--		if translit then
--			woortzeile = woortzeile .. ":Ümschrift in latiensch Bookstaven: " ..	translit  .. '\n' 
--		end
	end
	-- neue Zeile anhängen
	woortzeile = woortzeile .. '\n' 
	
	return woortzeile, Kategorien
end

--  Zeile mit Mehrzahl ausgeben; Schema ":Mehrtall: Pluralform"

function format_pluralzeile(plural)
	if not plural then
		return
	elseif
		plural == "" then
		return "MEHRTALL ANGEVEN, sünst TEXT oder -"
	elseif plural == "TEXT" then
		return
	elseif plural == "-" then
		return
	else
                plural = mw.ustring.gsub(plural, ', ', ']], [[')
		return ":Mehrtall: [[" .. plural .. "]]" .. '\n'
	end
end

function categories(lang, args, pos, gender, Kategorien)
	if lang == "MULT" then
		local ipx = 1
		while ipx  <= 30 do
			Kategorien = Kategorien .. "[[Kategorie:" .. require("Modul:languages").getByCode(args[ipx]):getCanonicalName() .. "]]"
			Kategorien = Kategorien .. "[[Kategorie:" .. require("Modul:languages").getByCode(args[ipx]):getCanonicalName() .. " " .. pos .. "]]"
			if gender then
				Kategorien = Kategorien .. "[[Kategorie:" .. require("Modul:languages").getByCode(args[ipx]):getCanonicalName() .. " " .. pos .. " (" ..  Hol_Geslecht_lang(gender) .. ")]]"
			end
			ipx = ipx + 1
			if args[ipx] == nil or args[ipx] == "" then
				break
			end
		end
	else
		Kategorien = Kategorien .. "[[Kategorie:" .. require("Modul:languages").getByCode(lang):getCanonicalName() .. "]]"
		Kategorien = Kategorien .. "[[Kategorie:" .. require("Modul:languages").getByCode(lang):getCanonicalName() .. " " .. pos .. "]]"
		if gender then
			Kategorien = Kategorien .. "[[Kategorie:" .. require("Modul:languages").getByCode(lang):getCanonicalName() .. " " .. pos .. " (" ..  Hol_Geslecht_lang(gender) .. ")]]"
		end
	Kategorien = Kategorien ..  ' '
	end
	return Kategorien
end

function Hol_Geslecht_lang(gender)
	local beteken = {}
		if gender == "m" then beteken = "masculinum"
		elseif gender == "f" then beteken = "femininum"
		elseif gender == "n" then beteken = "neutrum"
		elseif gender == "u" then beteken = "utrum"
		elseif gender == "mf" then beteken = "masculinum un femininum"
		elseif gender == "mn" then beteken = "masculinum un neutrum"
		elseif gender == "fn" then beteken = "femininum un neutrum"
		elseif gender == "mp" then beteken = "masculinum Plural"
		elseif gender == "fp" then beteken = "femininum Plural"
		elseif gender == "np" then beteken = "neutrum Plural"
		end
	return beteken
end

return export