Jewiki unterstützen. Jewiki, die größte Online-Enzy­klo­pädie zum Judentum.

Helfen Sie Jewiki mit einer kleinen oder auch größeren Spende. Einmalig oder regelmäßig, damit die Zukunft von Jewiki gesichert bleibt ...

Vielen Dank für Ihr Engagement! (→ Spendenkonten)

How to read Jewiki in your desired language · Comment lire Jewiki dans votre langue préférée · Cómo leer Jewiki en su idioma preferido · בשפה הרצויה Jewiki כיצד לקרוא · Как читать Jewiki на предпочитаемом вами языке · كيف تقرأ Jewiki باللغة التي تريدها · Como ler o Jewiki na sua língua preferida

Modul:Zitation

Aus Jewiki
Zur Navigation springen Zur Suche springen
 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: 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  '' .. titel .. ''
     else
        return  '' .. titel .. '.'
     end
   end
 -- Entscheidet anhand der letzten Zeichen, ob ein Punkt gesetzt wird oder nicht. Test für Vorlage:Internetquelle
 -- Aufruf: .
 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: IrgendeinTitel
 -- derzeit funktioniert die Ersetzung nicht, da die eingegeben Zeichenkette statt  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 "      
     -- 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: 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: 
 -- Ä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( )]*$')) 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} } --' .. 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 .. ' (Hrsg.):' else Ausgabe = Autor .. ':' end elseif (Sammelwerk == ) and (Herausgeber ~= ) then Ausgabe = Herausgeber .. ' (Hrsg.):' end

    if Titel ~=  then
   	Ausgabe = Ausgabe .. ' ' .. Titel .. ''

if TitelErg ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Titel, '.') ..' ' .. TitelErg end if (Sammelwerk == ) and (Reihe ~= ) then Ausgabe = Ausgabe .. ' (= ' .. Reihe .. ''

   		if (Band ~= ) and (Nummer ~= ) then
               Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr. ' .. Nummer 
           elseif (Band ~= ) then
               Ausgabe = Ausgabe .. ' ' .. Band
           elseif (Nummer ~= ) then

Ausgabe = Ausgabe .. ' Nr. ' .. 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 .. ' (Hrsg.): ' .. Sammelwerk .. '' else Ausgabe = Ausgabe .. ' In: ' .. Sammelwerk .. '' 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 .. ' (= ' .. Reihe .. ''

   		if (Band ~= ) and (Nummer ~= ) then
               Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr. ' .. Nummer 
           elseif (Band ~= ) then
               Ausgabe = Ausgabe .. ' ' .. Band
           elseif (Nummer ~= ) then

Ausgabe = Ausgabe .. ' Nr. ' .. Nummer end Ausgabe = Ausgabe .. ').' else if (Band ~= ) and (Nummer ~= ) then

               Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Band .. ', Nr. ' .. Nummer 
           elseif (Band ~= ) then
               Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Band
           elseif (Nummer ~= ) then

Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' Nr. ' .. 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. ' .. Nummer elseif (Band ~= ) then Ausgabe = Ausgabe .. ' ' .. Band elseif (Nummer ~= ) then Ausgabe = Ausgabe .. ' Nr. ' .. Nummer end end

if Verlag ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Verlag end

if Datum ~= then Jahr = '' .. FormatDate(Datum) .. '' 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 = '' .. FormatDate(Jahr ..'-' .. Monat .. '-' .. Tag) .. '' 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. ' .. Seiten .. ' Sp. ' .. Spalten
   	elseif  Seiten ~=  then
   		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' S. ' .. Seiten
   	else
   		Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' Sp. ' .. 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 .. ' .. DBcode .. ' DNB:' .. DBcode .. '' elseif DB == 'ZDB' then Ausgabe = Ausgabe .. ' .. DBcode .. ' ZDB-ID:' .. DBcode .. '' elseif DB == 'LCCN' then Ausgabe = Ausgabe .. ' ' .. frame:expandTemplate{ title = 'LCCN', args = {DBcode} } elseif DB == 'OCLC' then Ausgabe = Ausgabe .. ' .. DBcode .. ' OCLC:' .. DBcode .. '' elseif DB == 'PMC' then Ausgabe = Ausgabe .. ' DBcode .. ' PMC:' .. DBcode .. '' elseif DB == 'Bibcode' then Ausgabe = Ausgabe .. ' .. DBcode .. ' Bibcode:' .. DBcode .. '' elseif DB == 'JSTOR' then Ausgabe = Ausgabe .. ' .. 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 ' ..FormatDate(Zugriff) .. '' end end Ausgabe = Ausgabe .. ' (' .. Klammerinhalt .. ')' end

   -- Abschließender Punkt
   Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, '.')

return Ausgabe

 end
 

 return p