Modul:Tag/Person
Version vom 28. Mai 2019, 18:55 Uhr von Legat Garak (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „local Zeitlinien = { 'Neue Zeitlinie', 'Spiegeluniversum', 'Alternative Zeitlinie' } local p = {} function p.markieren(frame) local output = '* '…“)
Die Dokumentation für dieses Modul kann unter Modul:Tag/Person/Doku erstellt werden
local Zeitlinien = {
'Neue Zeitlinie',
'Spiegeluniversum',
'Alternative Zeitlinie'
}
local p = {}
function p.markieren(frame)
local output = '* '
local eins = frame.args['1']
local name = frame.args['Name']
local spezies1 = frame.args['Spezies1']
local spezies2 = frame.args['Spezies2']
local spezies3 = frame.args['Spezies3']
local zeitlinie = frame.args['Zeitlinie']
--****************************************************************************************
--* Name der Person als Link *
--* In diesen Bereich wird aus dem Wert Name ein Link auf den Personenartikel generiert. *
--****************************************************************************************
-- Namen als Link
if name == nil or name == '' then
if eins == nil or eins == '' then
name = '2'
else
if eins == '1' then
name = '1'
else
name = '2'
end
end
end
outputname = '[[' .. name .. ']]'
-- prüfen, ob es eine ~-Person ist
if istNamenlos(name) then
outputname = '[[' .. name .. '|Ein namentlich nicht bekanntes Individuum]]'
end
-- prüfen, ob Name nicht bekannt
if name == '1' then
outputname = 'Ein namentlich nicht bekanntes Individuum'
end
if tonumber(name) ~= nil then
if tonumber(name) > 1 then
outputname = 'Mehrere namentlich nicht bekannte Individuen'
end
end
--****************************************************************************************
--* Spezies der Person als Link *
--* In diesen Bereich wird aus dem Wert Spezies ein Link auf Speziesartikel generiert. *
--****************************************************************************************
-- Spezies als Link
if spezies1 == nil or spezies1 == '' then
outputspezies = '(unbekannte Spezies)'
end
-- erste Spezies als Link angeben, ggf. als namentlich unbekannt
if spezies1 ~= nil and spezies1 ~= '' then
outputspezies1 = '[[' .. spezies1 .. ']]'
--Für Spiegeluniversum soll der Spezieslink auf einen Abschnitt im Sammelartikel zeigen
if zeitlinie == 'Spiegeluniversum' then
outputspezies1 = '[[Völker des Spiegeluniversums#' .. spezies1 .. '|' .. spezies1 .. ']]'
if spezies1 == 'Mensch' then
outputspezies1 = '[[Völker des Spiegeluniversums#Terraner|Terraner]]'
end
end
-- prüfen, ob es eine ~-Spezies ist
if istNamenlos(spezies1) then
outputspezies = 'von [[' .. spezies1 .. '|einer namentlich nicht bekannten Spezies]]'
end
end
--zweite Spezies als Link angeben
outputspezies2 = ''
if spezies2 ~= nil and spezies2 ~= '' then
outputspezies2 = ', [[' .. spezies2 .. ']]'
--Für Spiegeluniversum soll der Spezieslink auf einen Abschnitt im Sammelartikel zeigen
if zeitlinie == 'Spiegeluniversum' then
outputspezies2 = ', [[Völker des Spiegeluniversums#' .. spezies2 .. '|' .. spezies2 .. ']]'
if spezies2 == 'Mensch' then
outputspezies2 = ', [[Völker des Spiegeluniversums#Terraner|Terraner]]'
end
end
end
--dritte Spezies als Link angeben
outputspezies3 = ''
if spezies3 ~= nil and spezies3 ~= '' then
outputspezies3 = ', [[' .. spezies3 .. ']]'
--Für Spiegeluniversum soll der Spezieslink auf einen Abschnitt im Sammelartikel zeigen
if zeitlinie == 'Spiegeluniversum' then
outputspezies3 = ', [[Völker des Spiegeluniversums#' .. spezies3 .. '|' .. spezies3 .. ']]'
if spezies3 == 'Mensch' then
outputspezies3 = ', [[Völker des Spiegeluniversums#Terraner|Terraner]]'
end
end
end
--alle Spezieslinks zusammenfassen
if spezies1 ~= nil and spezies1 ~= '' then
outputspezies = '(' .. outputspezies1 .. outputspezies2 .. outputspezies3 .. ')'
-- prüfen, ob es eine ~-Spezies ist
if istNamenlos(spezies1) then
outputspezies = 'von [[' .. spezies1 .. '|einer namentlich nicht bekannten Spezies]]'
end
end
--****************************************************************************************
--* Festlegen der Kategorien *
--* In diesen Bereich werden nach Name/Spezies die Kategorien generiert. *
--****************************************************************************************
--Zerlege name und gib den letzten Stringteil als nachnameoutput aus
--zuerst wird aber alles in runden Klammern entfernt
nameSub = string.gsub(name, " %((.*)%)", "" )
splitName = string.split(nameSub," ")
nachname = table.maxn(splitName)
nachnameNummer = tonumber(nachname)
nachnameoutput = splitName[nachnameNummer]
--wenn es ein Weyoun ist, wird nachnameoutput nur auf Weyoun gesetzt
if outputname == '[[Weyoun]]' then
nachnameoutput = 'Weyoun'
end
--wenn es ein Bajoraner ist, bleibt alles wie es ist
if spezies1 == 'Bajoraner' then
nachnameoutput = name
end
-- Kategorie festlegen
--ex. Kat nach Name?
katname = "Bild (" .. name .. ")"
katfull2 = ''
katfull3 = ''
--falls Zeitlinie, dann Zeitlinie in Kat für Person setzen
if istZeitlinie(zeitlinie) then
if zeitlinie == 'Neue Zeitlinie' then
if string.sub(name, -16) == '(Neue Zeitlinie)' then
katname = "Bild (" .. string.sub(name, 1, -18) .. ", " .. zeitlinie .. ")"
else
katname = "Bild (" .. name .. ", " .. zeitlinie .. ")"
end
else
katname = "Bild (" .. name .. ", " .. zeitlinie .. ")"
end
end
if mw.title.new( katname, 'Kategorie' ).exists == true then
katfull = "[[Kategorie:" .. katname .. "|" .. nachnameoutput .. "]]"
else
if spezies1 ~= '' and spezies1 ~= nil then
--ex. Kat nach Spezies1?
katname = "Bild (" .. spezies1 .. ")"
--falls Zeitlinie, dann Zeitlinie in Kat für Spezies setzen
if istZeitlinie(zeitlinie) then
katname = "Bild (" .. spezies1 .. ", " .. zeitlinie .. ")"
end
if mw.title.new( katname, 'Kategorie' ).exists == true then
katfull = "[[Kategorie:" .. katname .. "|" .. nachnameoutput .. "]]"
else
--dann setze Kat Person!
katname = "Bild (Person)"
--falls Zeitlinie, dann Kat (Person, Spiegeluniversum) setzen
if istZeitlinie(zeitlinie) then
katname = "Bild (Person, " .. zeitlinie .. ")"
end
katfull = "[[Kategorie:" .. katname .. "|" .. nachnameoutput .. "]]"
end
else
katname = "Bild (Person)"
katfull = "[[Kategorie:" .. katname .. "|" .. nachnameoutput .. "]]"
end
if spezies2 ~= nil and spezies2 ~= '' then
katSpezies2 = "Bild (" .. spezies2 .. ")"
--falls Zeitlinie, dann Zeitlinie in Kat für Spezies setzen
if istZeitlinie(zeitlinie) then
katSpezies2 = "Bild (" .. spezies2 .. ", " .. zeitlinie .. ")"
end
--ex. Kat nach Spezies2?
if mw.title.new( katSpezies2, 'Kategorie' ).exists == true then
katfull2 = "[[Kategorie:" .. katSpezies2 .. "|" .. nachnameoutput .. "]]"
else
--dann setze Kat Person!
katSpezies2 = "Bild (Person)"
--falls Zeitlinie, dann Kat (Person, Spiegeluniversum) setzen
if istZeitlinie(zeitlinie) then
katSpezies2 = "Bild (Person, " .. zeitlinie .. ")"
end
katfull2 = "[[Kategorie:" .. katSpezies2 .. "|" .. nachnameoutput .. "]]"
end
end
if spezies3 ~= nil and spezies3 ~= '' then
katSpezies3 = "Bild (" .. spezies3 .. ")"
--falls Zeitlinie, dann Zeitlinie in Kat für Spezies setzen
if istZeitlinie(zeitlinie) then
katSpezies3 = "Bild (" .. spezies3 .. ", " .. zeitlinie .. ")"
end
--ex. Kat nach Spezies3?
if mw.title.new( katSpezies3, 'Kategorie' ).exists == true then
katfull3 = "[[Kategorie:" .. katSpezies3 .. "|" .. nachnameoutput .. "]]"
else
--dann setze Kat Person!
katSpezies3 = "Bild (Person)"
--falls Zeitlinie, dann Kat (Person, Spiegeluniversum) setzen
if istZeitlinie(zeitlinie) then
katSpezies3 = "Bild (Person, " .. zeitlinie .. ")"
end
--Die Kategorien wird hier noch als Link angezeigt, damit beim Testen die Kategorie sichtbar wird
katfull3 = "[[Kategorie:" .. katSpezies3 .. "|" .. nachnameoutput .. "]]"
end
end
end
--****************************************************************************************
--* Ausgabe als zusammengesetzter String *
--* In diesen Bereich wird der Code für die Bildbeschreibung zusammengesetzt. *
--****************************************************************************************
--Setze für alle Weyouns nur Weyoun als Kategorie
if name == 'Weyoun 4' or name == 'Weyoun 5' or name == 'Weyoun 6' or name == 'Weyoun 7' or name == 'Weyoun 8' then
katfull = '[[Kategorie:Bild (Weyoun)|' .. name .. ']]'
end
-- Ausgabe als zusammengesetzter String
return '* ' .. outputname .. ' ' .. outputspezies .. "<br>" .. katfull .. ' ' .. katfull2 .. ' ' .. katfull3
end
--****************************************************************************************
--* Hinterlegte Funktionen *
--****************************************************************************************
-- prüft ob eine Zeichenkette mit ~ beginnt
function istNamenlos(name)
return string.sub(name, 1, 1) == '~'
end
-- prüft ob eine Zeitlinie in der offizellen Zeitlinien
-- liste ist.
function istZeitlinie(zeitlinie)
for _,line in pairs(Zeitlinien) do
if line == zeitlinie then
return true
end
end
return false
end
--Diese Funktion zerlegt einen String anhand des Delimiters Leerzeichen und setzt die Stringteile in eine
--Tabelle von Wertepaaren von 1 bis n
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
last = delim_to
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
return p