Modul:Namen
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