Fandom

Nahverkehr Wiki

Modul:Zitation

78Seiten in
diesem Wiki
Seite hinzufügen
Diskussion0

Störung durch Adblocker erkannt!


Wikia ist eine gebührenfreie Seite, die sich durch Werbung finanziert. Benutzer, die Adblocker einsetzen, haben eine modifizierte Ansicht der Seite.

Wikia ist nicht verfügbar, wenn du weitere Modifikationen in dem Adblocker-Programm gemacht hast. Wenn du sie entfernst, dann wird die Seite ohne Probleme geladen.

  local p = {}
  -- Ergänzt bei Titelformatierungen in Abhängigkeit der letzten Zeichen ein Punkt am Ende des Titels hinzu oder nicht. Test für Vorlage:Internetquelle / Vorlage:TitelFormat
  -- Aufruf: {{#invoke:Zitation|TitelFormat|titel=IrgendeinTitel}}
  function p.TitelFormat(frame)
      local titel = frame.args[1] or frame.args.titel
      if (titel == '') or (titel == nil) then
         return ''
      elseif (mw.ustring.find(titel, '[\.!?.!?。…][%]»«›‹‘’”“"\']*$')) or (mw.ustring.find(titel, '[\.!?.!?。…]</[%s%w]*>$')) then
         return  '<i>' .. titel .. '</i>'
      else
         return  '<i>' .. titel .. '.</i>'
      end
    end
 
  -- Entscheidet anhand der letzten Zeichen, ob ein Punkt gesetzt wird oder nicht. Test für Vorlage:Internetquelle
  -- Aufruf: {{#invoke:Zitation|Endpunkt|titel=IrgendeinTitel}}
  function p.Endpunkt(frame)
      local titel = frame.args[1] or frame.args.titel
      if (titel == '') or (mw.ustring.find(titel, '[\.!?.!?。…][%]»«›‹‘’”“"\']*$')) or (mw.ustring.find(titel, '[\.!?.!?。…]</[%s%w]*>$')) then
         return  ''
      else
         return  '.'
      end
    end
 
  -- Funktion zum Ersetzen von ausgewählten Elementen der Wiki-Syntax. Wird benötigt, um die durch Vorlage:Coins eingebundnenen Datensätze frei von Wiki-Syntax zu halten.
  -- Aufruf: {{#invoke:Zitation|RemoveWikiSyntax|text=IrgendeinTitel}}
  -- derzeit funktioniert die Ersetzung nicht, da die eingegeben Zeichenkette statt <math>..</math> einen UNIQ..QINU String enhält, vgl. http://www.mediawiki.org/wiki/QINU_fix
  function p.RemoveWikiSyntax(frame)
      local text = frame.args[1] or frame.args.text
      text = mw.ustring.gsub(text,'(UNIQ.+QINU)',"FEHLER %1")
      --text = "Test - Electroweak corrections to the charm quark contribution to <math>K</math>"      
      -- internen Link entfernen (z. B. bei Autorenartikelverknüpfungen)
      text = mw.ustring.gsub(text,'%[%[([^%[%]]*)%]%]',"%1")
      -- math-Tag in TeX-Math-Umgebung umwandeln, u.a. weil math-Tags zu fehlenden COinS-Tags führen
      text = mw.ustring.gsub(text,'(<%s*/*%s*math[^>]*>)',"$")
      return  text
  end
 
  -- Funktion zum Bereinigen von ISBN-Angaben. Wird benötigt, um unnötige Fehler durch Bindestriche oder Leerzeichen bei der Nutrzung der Vorlage:bibISBN zu umgehen.
  -- Aufruf: {{#invoke:Zitation|CleanISBN|isbn=IrgendeinTitel}}
  function p.CleanISBN(frame)
      local isbn = frame.args[1] or frame.args.isbn
      isbn = mw.ustring.gsub(isbn,'[- ]+',"")
      return  isbn
  end
 
  -- Test einer Umsetzung von Vorlage:Literatur in Lua, Ziel: Abschätzung des Ressourcenverbrauchs.
  -- Aufruf: {{#invoke:Zitation|Literatur|Autor, Herausgeber, Titel, TitelErg, Sammelwerk, WerkErg, Reihe, Band, Nummer, Auflage, Verlag, Ort, Jahr, Monat, Tag, Datum, Kapitel, Seiten, Spalten, ISBN, ISBNistFormalFalsch, ISSN, Kommentar, Originaltitel, Originalsprache, Uebersetzer, DOI, PMID, DB, DBcode, Online, Zugriff, Typ}}
  -- Änderungen:
  -- 10. April 2013: erste Testversion
  -- 11. April 2013: Korrektur der Ausgabe von Band und Nummer
  -- 21. April 2013: Flexibilisierung des Parameters-Auflage (Ergänzung von "Auflage" nur bei Bedarf)
  -- 22. April 2013: Ausgabe des abschließenden Punktes korrigiert
  -- 30. April 2013: Umstellung der Abfrage für Trennzeichen
 
  function p.Literatur(frame)
    function AddDelimiterIfNeeded(text, delimiter)
        --local text = frame.args[1] or frame.args.text
        if delimiter == nil then
            delimiter = '.'
        end
 
        if (text == '') or (mw.ustring.find(text, '[\.:!?.:!?。…][%]»«›‹‘’”“"\']*[%s(&#160;)]*$')) or (mw.ustring.find(text, '[\.:!?.:!?。…]</[%s%w]*>$')) then
    		return  ''
		else
			return  delimiter
		end
    end
 
   function FormatDate(Datum)
       if not mw.ustring.find(frame:expandTemplate{ title = 'FormatDate', args = {Datum} }, 'Fehler') then
           return frame:expandTemplate{ title = 'FormatDate', args = {Datum} } --{{#iferror: {{FormatDate|' .. Datum .. '}}|' .. Datum .. '}}
       else
           return Datum
       end
   end
 
 local args = frame.args
 local Autor = args.Autor or ''
 local Herausgeber = args.Herausgeber or ''
 local Titel = args.Titel or ''
 local TitelErg = args.TitelErg or ''
 local Sammelwerk = args.Sammelwerk or ''
 local WerkErg = args.WerkErg or ''
 local Reihe = args.Reihe or ''
 local Band = args.Band or ''
 local Nummer = args.Nummer or ''
 local Auflage = args.Auflage or ''
 local Verlag = args.Verlag or ''
 local Ort = args.Ort or ''
 local Jahr = args.Jahr or ''
 local Monat = args.Monat or ''
 local Tag = args.Tag or ''
 local Datum = args.Datum or ''
 local Kapitel = args.Kapitel or ''
 local Seiten = args.Seiten or ''
 local Spalten = args.Spalten or ''
 local ISBN = args.ISBN or ''
 local ISBNistFormalFalsch = args.ISBNistFormalFalsch or ''
 local ISSN = args.ISSN or ''
 local Kommentar = args.Kommentar or ''
 local Originaltitel = args.Originaltitel or ''
 local Originalsprache = args.Originalsprache or ''
 local Uebersetzer = args.Uebersetzer or ''
 local DOI = args.DOI or ''
 local PMID = args.PMID or ''
 local DB = args.DB  or ''
 local DBcode = args.DBcode or ''
 local Online = args.Online or ''
 local Zugriff = args.Zugriff or ''
 local Typ = args.Typ or ''
 
	local Ausgabe = ''
 
	 if (Autor ~= '') and (Typ ~= 'wl') then
		if (Sammelwerk == '') and (Herausgeber ~= '') then
			Ausgabe = Autor .. ', ' .. Herausgeber .. '&#160;(Hrsg.):'
		else
			Ausgabe = Autor .. ':'
		end
	 elseif (Sammelwerk == '') and (Herausgeber ~= '') then
		Ausgabe = Herausgeber .. '&#160;(Hrsg.):'
	 end
 
     if Titel ~= '' then
    	Ausgabe = Ausgabe .. ' <i>' .. Titel .. '</i>'
		if TitelErg ~= '' then
			Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Titel, '.') ..' ' .. TitelErg
		end
		if (Sammelwerk == '') and (Reihe ~= '') then
			Ausgabe = Ausgabe .. ' (=&#160;<i>' .. Reihe .. '</i>'
    		if (Band ~= '') and (Nummer ~= '') then
                Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr.&#160;' .. Nummer 
            elseif (Band ~= '') then
                Ausgabe = Ausgabe .. ' ' .. Band
            elseif (Nummer ~= '') then
				Ausgabe = Ausgabe .. ' Nr.&#160;' .. Nummer
			end
			Ausgabe = Ausgabe .. ').'
		elseif TitelErg ~= '' then
			Ausgabe = Ausgabe .. AddDelimiterIfNeeded(TitelErg, '.')
        else
            Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Titel, '.')
		end
	 end
 
	 if Sammelwerk ~= '' then
		if Herausgeber ~= '' then
			Ausgabe = Ausgabe .. ' In: ' .. Herausgeber .. '&#160;(Hrsg.): <i>' .. Sammelwerk .. '</i>'
		else
			Ausgabe = Ausgabe .. ' In: <i>' .. Sammelwerk .. '</i>'
		end
 
		if WerkErg ~= '' then
			Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Werk, '.') ..  ' ' .. WerkErg 
		end
 
		if Auflage ~= '' then
            Auflage = Auflage:gsub("^%s*(.-)%s*$", "%1"):gsub('Auflage$', 'Aufl.'):gsub('[eE]dition', 'ed.')
        	if (Auflage:find('Aufl[%.]*$') == nil) and (Auflage:find('[eE]d[%.]*$') == nil) then
        	    Auflage = Auflage ..  ' Aufl.'
        	end
            Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Auflage
		end
 
		if (Reihe ~= '') then
			Ausgabe = Ausgabe .. ' (=&#160;<i>' .. Reihe .. '</i>'
    		if (Band ~= '') and (Nummer ~= '') then
                Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr.&#160;' .. Nummer 
            elseif (Band ~= '') then
                Ausgabe = Ausgabe .. ' ' .. Band
            elseif (Nummer ~= '') then
				Ausgabe = Ausgabe .. ' Nr.&#160;' .. Nummer
			end
			Ausgabe = Ausgabe .. ').'
		else
			if (Band ~= '') and (Nummer ~= '') then
                Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Band .. ', Nr.&#160;' .. Nummer 
            elseif (Band ~= '') then
                Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Band
            elseif (Nummer ~= '') then
				Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' Nr.&#160;' .. Nummer
			end
	     end
    else
         if Auflage ~= '' then
            Auflage = Auflage:gsub("^%s*(.-)%s*$", "%1"):gsub('Auflage$', 'Aufl.'):gsub('[eE]dition', 'ed.')
        	if (Auflage:find('Aufl[%.]*$') == nil) and (Auflage:find('[eE]d[%.]*$') == nil) then
        	    Auflage = Auflage ..  ' Aufl.'
        	end
            Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Auflage
		end
 
		if (Band ~= '') and (Nummer ~= '') then
			Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr.&#160;' .. Nummer 
		elseif (Band ~= '') then
			Ausgabe = Ausgabe .. ' ' .. Band
		elseif (Nummer ~= '') then
			Ausgabe = Ausgabe .. ' Nr.&#160;' .. Nummer
		end		
	 end
 
	 if Verlag ~= '' then
		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Verlag
	 end
 
	 if Datum ~= '' then
		Jahr = '<span style="white-space:nowrap;">' .. FormatDate(Datum) .. '</span>'
	 else
		if Monat ~= '' then
			iMonat = tonumber(Monat)
			if iMonat then
				if (iMonat > 0) and (iMonat <10) then
					Monat = '0' .. tonumber(Monat)
				end
			end
			iTag = tonumber(Tag)
			if iTag then
				if (tonumber(iTag) < 0) or (tonumber(iTag) > 31) then
					Tag = '00'
				end
			end
			Jahr = '<span style="white-space:nowrap;">' .. FormatDate(Jahr ..'-' .. Monat .. '-' .. Tag) .. '</span>'
		end
	 end
 
	if (Ort ~= '') or (Jahr ~= '') then
        if (Ort ~= '') and (Jahr ~= '') then   
    		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',').. ' ' .. Ort .. ' ' .. Jahr
        elseif (Ort ~= '') then
            Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',').. ' ' .. Ort
    	else
    		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',').. ' ' .. Jahr
        end
    end
     -- ISBN oder ISSN, aber nicht beides
	 if ISBN ~= '' then
	    if ISBNistFormalFalsch ~= '' then
			Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. frame:expandTemplate{ title = 'Falsche ISBN', args = {ISBN} }
		else
		    Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ISBN ' .. ISBN
        end
	 elseif ISSN ~= '' then
		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. frame:expandTemplate{ title = 'ISSN', args = {ISSN} }
	 end
 
	if Kapitel ~= '' then
		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Kapitel
	end
 
    if (Seiten ~= '') or (Spalten ~= '') then
    	if (Seiten ~= '') and (Spalten ~= '') then
            Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' S.&#160;' .. Seiten .. ' Sp.&#160;' .. Spalten
    	elseif  Seiten ~= '' then
    		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' S.&#160;' .. Seiten
    	else
    		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' Sp.&#160;' .. Spalten
    	end
    end
 
	if DOI  ~= '' then
		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' [[doi:' .. DOI .. ']]'
	end
	if PMID  ~= '' then
		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' PMID ' .. PMID .. ''
	end
 
	if (DB ~= '') and (DBcode ~= '') then
        Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',')  -- .. ','
		if (DB == 'arxiv') or (DB == 'arXiv') then
			Ausgabe = Ausgabe .. ' ' .. frame:expandTemplate{ title = 'arxiv', args = {DBcode} }
		elseif DB == 'DNB' then
			Ausgabe = Ausgabe .. ' <span class="plainlinks-print">[http://d-nb.info/' .. DBcode .. ' DNB:' .. DBcode .. ']'
		elseif DB == 'ZDB' then
			Ausgabe = Ausgabe .. ' <span class="plainlinks-print">[http://dispatch.opac.d-nb.de/DB=1.1/CMD?ACT=SRCHA&IKT=8506&TRM=' .. DBcode .. ' ZDB-ID:' .. DBcode .. ']'
		elseif DB == 'LCCN' then
			Ausgabe = Ausgabe .. ' ' .. frame:expandTemplate{ title = 'LCCN', args = {DBcode} }
		elseif DB == 'OCLC' then
			Ausgabe = Ausgabe .. ' [http://worldcat.org/oclc/' .. DBcode .. ' OCLC:' .. DBcode .. ']'
		elseif DB == 'PMC' then
			Ausgabe = Ausgabe .. ' [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC'.. DBcode .. ' PMC:' .. DBcode .. ']'
		elseif DB == 'Bibcode' then
			Ausgabe = Ausgabe .. ' [http://adsabs.harvard.edu/abs/' .. DBcode .. ' Bibcode:' .. DBcode .. ']'
		elseif DB == 'JSTOR' then
			Ausgabe = Ausgabe .. ' [http://www.jstor.org/stable/' .. DBcode .. ' JSTOR:' .. DBcode .. ']'
		else
		end
	end
 
	if (Kommentar ~= '') or (Online ~= '') then
	    Klammerinhalt = ''
		if (Kommentar ~= '') and (Online ~= '') then
			Klammerinhalt = Klammerinhalt .. Kommentar .. ', '
		else
			Klammerinhalt = Klammerinhalt .. Kommentar
		end
		if Online ~= '' then
			Klammerinhalt = Klammerinhalt .. Online
			if Zugriff ~= '' then
				Klammerinhalt = Klammerinhalt .. ', abgerufen am <span style="white-space:nowrap;">' ..FormatDate(Zugriff) .. '</span>'
			end
		end
		Ausgabe = Ausgabe .. ' (' .. Klammerinhalt .. ')'
	end
 
    -- Abschließender Punkt
    Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, '.')
 
	return Ausgabe
 
  end
 
----------
  return p

Auch bei Fandom

Zufälliges Wiki