Modul:Quelleninformationen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Maggus (Diskussion | Beiträge) (Quelleninformationen) |
Stewie (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
--[[ | --[[ | ||
Lua Modul | Lua-Modul zur Darstellung von Quellenangaben eines Artikels | ||
----------------------------------------------- | |||
Dieses Modul fragt alle *Unterobjekte* des aktuellen Artikels ab, die dem Typ „Quellenverzeichnis“ entsprechen. | |||
Diese enthalten strukturierte Informationen wie: | |||
- Publikation (z. B. ein Quellenbuch) | |||
- Seitenzahl(en) innerhalb dieser Publikation | |||
Voraussetzung ist, dass für einen Artikel Unterobjekte vom Typ `Quellenverzeichnis` existieren, | |||
die über `-Hat Unterobjekt::Seitentitel` mit dem Hauptartikel verknüpft sind. | |||
local | Verwendung: | ||
local QuellenModul = require('Modul:Quelleninformationen') | |||
QuellenModul.getQuellen({ args = { Pagename = "Diamantpfeil" } }) | |||
function p.getQuellen( frame ) | Gibt einen HTML-String mit aufbereiteten Quelleninformationen zurück. | ||
-- | --]] | ||
local p = {} -- p steht für das Lua-"package", in dem alle Funktionen gespeichert werden | |||
function p.getQuellen(frame) | |||
-- Schritt 1: Hole den Artikelnamen aus dem Frame-Argument | |||
local arg = frame.args['Pagename'] | local arg = frame.args['Pagename'] | ||
if arg == nil then return nil end | if arg == nil then return nil end -- Falls kein Artikeltitel angegeben ist, abbrechen | ||
local returnString = "" | |||
local queryResult = | local returnString = "" -- Ergebnis-String für Ausgabe | ||
-- Schritt 2: Finde alle Unterobjekte vom Typ „Quellenverzeichnis“, die zu diesem Artikel gehören | |||
-- Dazu verwenden wir zwei semantische Bedingungen: | |||
-- * [[Subobject Type::Quellenverzeichnis]] → nur Quellen-Unterobjekte | |||
-- * [[-Hat Unterobjekt::Artikelname]] → die zugehörig zum angegebenen Artikel sind | |||
-- `|?=#|format=array` → liefert nur die Seitennamen als Array, keine weiteren Daten | |||
local queryResult = mw.smw.ask( | |||
'[[Subobject Type::Quellenverzeichnis]][[-Hat Unterobjekt::' .. arg .. ']]' .. | |||
'|?=#|limit=1999|format=array|' | |||
) | |||
-- Falls keine Treffer, Rückgabe bleibt leer | |||
if not queryResult then return nil end | |||
-- Schritt 3: Für jedes gefundene Unterobjekt Details abfragen | |||
local i = 1 | local i = 1 | ||
while i <= | while i <= #queryResult do | ||
local subobjectTitle = queryResult[i][1] -- Name des Unterobjekts (z. B. „Diamantpfeil#Quellenverzeichnis zu X“) | |||
returnString = returnString .. queryQuelle[1]['Publikation'] .. ":" | -- Zweite Abfrage: Holen der Properties des Unterobjekts selbst | ||
local queryQuelle = mw.smw.ask( | |||
returnString = returnString .."(ohne Angaben)" | string.format('[[%s]]|?Quelleninformationen|?Publikation|mainlabel=-', subobjectTitle) | ||
elseif | ) | ||
returnString = returnString .. " : " | -- Sicherheit: Nur verarbeiten, wenn tatsächlich etwas zurückkam | ||
if queryQuelle and queryQuelle[1] then | |||
-- Ausgabe beginnt mit dem Publikationstitel | |||
returnString = returnString .. (queryQuelle[1]['Publikation'] or "Unbekannt") .. ":" | |||
-- Seitenangaben verarbeiten | |||
else -- | local seiten = queryQuelle[1]['Quelleninformationen'] | ||
returnString = returnString .. " | if not seiten then | ||
returnString = returnString .. "(ohne Angaben)" -- Wenn keine Seitenzahl vorhanden | |||
elseif type(seiten) == "table" then | |||
-- Falls mehrere Seiten (z. B. durch Mehrfachzuweisung) | |||
returnString = returnString .. " : " | |||
for _, seite in ipairs(seiten) do | |||
returnString = returnString .. seite .. "," | |||
end | |||
else | |||
-- Einzelne Seitenzahl | |||
returnString = returnString .. " " .. seiten | |||
end | end | ||
returnString = returnString .. "<br>" | returnString = returnString .. "<br>" | ||
end | end | ||
i = i + 1 | |||
end | |||
return returnString -- HTML-Ausgabe fertig | |||
end | end | ||
return p | return p |
Aktuelle Version vom 16. Mai 2025, 09:39 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Quelleninformationen/Doku erstellt werden
--[[
Lua-Modul zur Darstellung von Quellenangaben eines Artikels
-----------------------------------------------
Dieses Modul fragt alle *Unterobjekte* des aktuellen Artikels ab, die dem Typ „Quellenverzeichnis“ entsprechen.
Diese enthalten strukturierte Informationen wie:
- Publikation (z. B. ein Quellenbuch)
- Seitenzahl(en) innerhalb dieser Publikation
Voraussetzung ist, dass für einen Artikel Unterobjekte vom Typ `Quellenverzeichnis` existieren,
die über `-Hat Unterobjekt::Seitentitel` mit dem Hauptartikel verknüpft sind.
Verwendung:
local QuellenModul = require('Modul:Quelleninformationen')
QuellenModul.getQuellen({ args = { Pagename = "Diamantpfeil" } })
Gibt einen HTML-String mit aufbereiteten Quelleninformationen zurück.
--]]
local p = {} -- p steht für das Lua-"package", in dem alle Funktionen gespeichert werden
function p.getQuellen(frame)
-- Schritt 1: Hole den Artikelnamen aus dem Frame-Argument
local arg = frame.args['Pagename']
if arg == nil then return nil end -- Falls kein Artikeltitel angegeben ist, abbrechen
local returnString = "" -- Ergebnis-String für Ausgabe
-- Schritt 2: Finde alle Unterobjekte vom Typ „Quellenverzeichnis“, die zu diesem Artikel gehören
-- Dazu verwenden wir zwei semantische Bedingungen:
-- * [[Subobject Type::Quellenverzeichnis]] → nur Quellen-Unterobjekte
-- * [[-Hat Unterobjekt::Artikelname]] → die zugehörig zum angegebenen Artikel sind
-- `|?=#|format=array` → liefert nur die Seitennamen als Array, keine weiteren Daten
local queryResult = mw.smw.ask(
'[[Subobject Type::Quellenverzeichnis]][[-Hat Unterobjekt::' .. arg .. ']]' ..
'|?=#|limit=1999|format=array|'
)
-- Falls keine Treffer, Rückgabe bleibt leer
if not queryResult then return nil end
-- Schritt 3: Für jedes gefundene Unterobjekt Details abfragen
local i = 1
while i <= #queryResult do
local subobjectTitle = queryResult[i][1] -- Name des Unterobjekts (z. B. „Diamantpfeil#Quellenverzeichnis zu X“)
-- Zweite Abfrage: Holen der Properties des Unterobjekts selbst
local queryQuelle = mw.smw.ask(
string.format('[[%s]]|?Quelleninformationen|?Publikation|mainlabel=-', subobjectTitle)
)
-- Sicherheit: Nur verarbeiten, wenn tatsächlich etwas zurückkam
if queryQuelle and queryQuelle[1] then
-- Ausgabe beginnt mit dem Publikationstitel
returnString = returnString .. (queryQuelle[1]['Publikation'] or "Unbekannt") .. ":"
-- Seitenangaben verarbeiten
local seiten = queryQuelle[1]['Quelleninformationen']
if not seiten then
returnString = returnString .. "(ohne Angaben)" -- Wenn keine Seitenzahl vorhanden
elseif type(seiten) == "table" then
-- Falls mehrere Seiten (z. B. durch Mehrfachzuweisung)
returnString = returnString .. " : "
for _, seite in ipairs(seiten) do
returnString = returnString .. seite .. ","
end
else
-- Einzelne Seitenzahl
returnString = returnString .. " " .. seiten
end
returnString = returnString .. "<br>"
end
i = i + 1
end
return returnString -- HTML-Ausgabe fertig
end
return p