Modul:Pdf
Zur Navigation springen
Zur Suche springen
Prozedur proc aufrufen: {{#invoke:Pdf|proc}} · Modul einbinden: local t = require('Module:Pdf')
Unterseiten
local p = {} -- p stands for package
function p.embed(frame)
local a = frame.args -- direkt per #invoke: übergeben
local b = frame:getParent().args -- an die Vorlage übergebene Parameter
if empty(a) then a = b or { } end
local ns = mw.title.getCurrentTitle().namespace
local ct = '[[Category:xxx]]'
if ns ~= 6 then return '' end -- nur Dateinamensraum soll ausgewertet werden
local myname = mw.title.getCurrentTitle().text:lower()
local cat, caty, catx = '', string.match(myname, ('^%d*%-(.*)%.pdf')), ''
if string.find(myname, "lily") then cat = 'Lilypond' end
if cat > ' ' then catx = ct:gsub('xxx', cat) end
return catx
end
function p.monat(frame)
local a = frame.args -- direkt per #invoke: übergeben
local b = frame:getParent().args -- an die Vorlage übergebene Parameter
if empty(a) then a = b or { } end
local monat = { 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' }
local ns = mw.title.getCurrentTitle().namespace
if ns ~= 6 then return '' end -- nur Dateinamensraum soll ausgewertet werden
-- der Aufbau des Dateinamens muss folgendermaßen gestaltet sein: YYYYMM-xxx.pdf
-- xxx steht für eine beliebige, in Dateinamen zulässige Zeichenkette
local myname = mw.title.getCurrentTitle().text
local endung = myname:match('^%d%d%d%d%d%d%-.*%.pdf$')
if not endung then return '' end -- derzeit nur für PDFs auswerten
local jahr = myname:match('^%d%d%d%d') -- das Jahr muss am Namensbeginn kommen
if not jahr or jahr < '2000' then return '' end -- keine 4stellige Ziffernfolge gefunden
local mymonat = tonumber(myname:match('^%d%d%d%d(%d%d)')) -- Monatsnamen ermitteln: zwei Ziffern nach dem Jahr
if not mymonat or mymonat > 12 or mymonat <1 then return '' end
local mocat = monat[mymonat] .. '_' .. jahr -- jetzt haben wir auch den Monat herausgefunden und verknüpfen ihn gleich mit Jahr/PDF
return ''
end
function p.vorlage(frame)
local a = frame.args -- direkt per #invoke: übergeben
local b = frame:getParent().args -- an die aufrufende Vorlage übergebene Parameter
local c= a['vorlage'] or b['vorlage'] or 'Lorem' -- Name der Vorlage
local i,v
local _, katz = '', ''
for i,v in pairs(a) do -- direkt per #invoke: übergeben
if tostring(i):lower() ~= 'vorlage' and v > ' ' then
katz = katz .. '|' .. i .. '=' .. trim(v)
end
end
for i,v in pairs(b) do -- an die aufrufende Vorlage übergebene Parameter
if tostring(i):lower() ~= 'vorlage' and v > ' ' then
katz = katz .. '|' .. i .. '=' .. trim(v)
end
end
katz = '{{' .. c .. katz .. '}}'
return katz
end
function trim(s)
-- entfernt Weißraum an den beiden Enden des Strings
if type(s) ~= 'string' then return s end -- falls kein string
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
function empty (self)
-- es gibt keine eingebaute Funktion, um zu überprüfen, ob eine Tabelle leer ist
-- diese Funktion liefert true, wenn die Tabelle leer ist
-- hilfreich bei frame.args oder frame:parent().args etc.
for _, _ in pairs(self) do
return false
end
return true
end
function gibts(name, namespace)
-- liefert true, wenn die Wikiseite "name" im namespace "namespace" existiert
-- default namespace ist main
if name == nil then return false end
local name = name
local space = namespace or ''
if space ~= '' then space = space .. ':' end
local titel = mw.title.new(space .. name)
if titel.exists then return titel end
return false
end
return p