Modul:Tag/Person

aus Memory Alpha, der freien deutschen Star-Trek-Datenbank
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 = '* '…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version ansehen (Unterschied) | Nächstjüngere Version → (Unterschied)
Spring zu: Navigation, suche

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