Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


local p = {}
 
function p.book(frame)

  local pframe = frame:getParent()
  local args = pframe.args

  local tname = "Librivox Buch" -- Name der aufrufenden Vorlage. Zu ändern, wenn der Vorlagenname sich ändert.

  local titel   = nil -- Titel des Buchs, ist gleichzeitig angezeigter und für die url verwendeter Titel (wenn leer gelassen, wird der Artikelname verwendet)
  local dtitel  = nil -- dargestellter Titel (wenn leer gelassen, wird der Titel verwendet)
  local stitel  = nil -- für die Such-Url verwendeter Titel (wenn leer gelassen, wird der Titel verwendet)
  local lname   = nil -- Nachname
  local id      = nil -- nicht unterstützt
  local autor  = nil -- Autor, voller Name des Autors
  local tagline = "Public-Domain-Hörbuch bei [[LibriVox]]"
  local urlhead = "https://librivox.org/search?"
  local italic   = "''"

  id = trimArg(args.id)
  if id then
    error("Fehler in der Vorlagenverwendung:" .. tname .. " - id Parameter wird hier nicht unterstützt - bitte die Dokumentation der Vorlage beachten!")
  end

  titel = trimArg(args.titel)
  if not titel then
    titel = mw.title.getCurrentTitle().text                   -- Verwende den Artikelnamen
  end
  dtitel = mw.ustring.gsub(titel,'%s+%([^%(]-%)$', '')        -- Trimme den Artikelnamen, evtl. Klammern entfernen
  stitel = dtitel

  if trimArg(args.stitel) then
    stitel = trimArg(args.stitel)
    if not trimArg(args.titel) then                           -- Wenn kein Titel, aber ein Url Titel angegeben wurde, nehme den Such-Url Titel als dargestellten Titel
      dtitel = stitel
    end
  end
  if trimArg(args.dtitel) then
    dtitel = trimArg(args.dtitel)                             -- Wenn ein Anzeige-Titel angegeben wurde, zeige ihn an.
    italic  = ""
  end

  local stitel = mw.ustring.gsub(stitel," ", "+")             -- Ersetze Leerzeichen durch "+"-Zeichen

  autor = trimArg(args.autor)
  if not autor then
    lname = ""
  else
    --- Teile den Autorennamen in Wörter auf, zähle die Wörter, verwende nur den letzten (Nach-)Namen
    local N = mw.text.split(autor, " ")
    local l, count = mw.ustring.gsub(autor, "%S+", "")
    lname = N[count]
  end

  local url = "[[File:Speaker Icon.svg|15px|link=|alt=]] " .. "[" .. urlhead .. "title=" .. stitel .. "&author=" .. lname .. "&reader=&keywords=&genre_id=0&status=all&project_type=either&recorded_language=&sort_order=catalog_date&search_page=1&search_form=advanced" .. " " .. italic .. dtitel .. italic .. "]" .. " " .. tagline

  return url

end

function trimArg(arg)
  if arg == "" or arg == nil then
    return nil
  else
    return mw.text.trim(arg)
  end
end

return p