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