Modul:Namen

Aus GaretienWiki
Zur Navigation springen Zur Suche springen

Die Dokumentation für dieses Modul kann unter Modul:Namen/Doku erstellt werden

local p = {}

require("Modul:Hilfsfunktionen")

function pruefeName(name)
	--Titel in doppelten Anführungsstrichen raus
	if mw.ustring.find(name,"\"",1,true)~=nil then return "" end
	--Römische Zahlen (alles mit .) raus
	if mw.ustring.find(name,".",1,true)~=nil then return "" end
	--Zu aussortierende Namen
	local filter={"Mutter","Vater","Bruder","Schwester","Sohn","Tochter",
		"Heilige","Heiliger","Sankt","Sankta",
		"Meister","Meisterin","Abt","Äbtissin",
		"Baron","Beispiel"}
	for k,v in pairs(filter) do
		if v==name then return "" end
	end
	--Worte, nach denen nicht weiter gesucht wird
	local stop={"von","vom","zu","zum","zur","des","der","am","im","an","in",
		"auf","a","al","ap","aus","ay","ben","da","di","de","della","den","der",
		"die","du","dyll","dylli","han","ibn","il","ni","res","saba","te","ui",
		"vor","ya"}
	for k,v in pairs(stop) do
		if v==name then return nil end
	end
	return name
end

function vornamen(name)
	--Sonderzeichen raus
	local n=mw.ustring.gsub(name,"-"," ")
	n=mw.ustring.gsub(n,"'","")
	n=mw.ustring.gsub(n,"´"," ")
	n=mw.ustring.gsub(n,"`"," ")
	n=mw.ustring.gsub(n,","," ")
	--nach Leerzeichen teilen
	local namen=split(n," ")
	local result={}
	--bei nur einem Namen ist dies der Vorname, ansonsten wird der letzte Name immer ignoriert
	local c=#namen-1
	if c==0 then c=1 end
	local i=1
	for j=1,c do
		local n=pruefeName(namen[j])
		if n~=nil and n~="" then
			result[i]=n
			i=i+1
		end
		if n==nil then break end
	end	
	return result
end

function p.Vornamen(frame)
	if (frame.args[1]==nil)or(frame.args[2]==nil) then
		return 'no parameter found'
	end
	local name=robusttrim(frame.args[1])
	local nr=tonumber(robusttrim(frame.args[2]))
	local namen=vornamen(name)
	if namen[nr]==nil then return "" end
	return namen[nr]
end

return p