Modul:Spielwiese

Zur Navigation springen Zur Suche springen

Prozedur proc aufrufen: {{#invoke:Spielwiese|proc}} · Modul einbinden: local t = require('Module:Spielwiese')

Unterseiten

Verwendung


Don't clutter the Module's version history, use this module for testing!


Aufruf: {{#invoke:Spielwiese|name}} Einbindung: require('Module:Spielwiese')


local p = {} -- p stands for package
local upros = require('Module:Upros')
local tab   = mw.loadData('Module:LSR/tabelle')
local ta    = require( "Modul:LSR/tabelle" )

function p.pagex(frame)
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter

	local width = a.width or b.width or 'auto'
	local height = a.height or b.height or '200px'
	local text  = a.text or b.text or 'Beschreibung fehlt'
	local ws    = a.ws or b.ws or 'pre-wrap'
	
	local lsr = "LSR/"
	local nrliste = 'Score:LSR'
	local i, titel, url, clsr, zeile
	
	local nummern = frame:preprocess('{{' .. nrliste .. '}}')
	local alsr = mw.text.split(nummern, '[%c]' )  -- Tabelle der Snippets mit Titel und #
	
	local _    = '{{TOV}}{{Bluetitle|1='
	local ich  = mw.title.getCurrentTitle()
	local llnr = ich.subpageText
	--if 1 then return llnr .. #alsr end
	local lnr  = llnr * 1
	--if height ~= '' then height = 'auto' end
	for i=1, #alsr do
		zeile = mw.text.split(alsr[i], '[%*]' )
		titel = trim(zeile[1])
		clsr  = trim(zeile[2])
		if 	clsr == llnr then
			_ = _ .. titel .. '}}\n{{Ref|1=http://lsr.di.unimi.it/LSR/Item?id=' .. llnr
			_ = _ .. '|2=LSR Snippet Nr. ' .. llnr .. '|ref=}}\n'
			_ = _ .. '{{Absatz}}\n{{Bildteil|1=LSR_pic_' .. llnr .. '.png|bildheight=' .. height .. '|height=' .. height .. '|overflow=none}}'
			_ = _ .. '\n== Beschreibung =='
			_ = _ .. '\n{{InfoBox|1=<div style="white-space: ' .. ws .. '">' .. text .. '\n</div>}}'
			_ = _ .. '\n== Lilypond-Code =='
			_ = _ .. '\n{{:{{PAGENAME}}/code}}'
			_ = _ .. '\n== Unterseiten =='
			_ = _ .. '\n<div style="column-count: 3; width: 1000px">\n{{:Special:PrefixIndex/:{{PAGENAME}}/}}\n</div>'
		end
	end
	return _ 
end

function p.lsrx(frame)
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die aufrufende Vorlage übergebene Parameter
	local nrliste = 'Score:LSR'
	
	local nummern = frame:preprocess('{{' .. nrliste .. '}}')
	local numtab  = mw.text.split(nummern, '[%c]' )  -- in einzelne Zeilen zerlegen
	local zeilen  = #numtab	                         -- Anzahl der Zeilen
	local i, titel, url, clsr, zeile
	local lsr = "LSR/"
	local alles = ''
	
	for i=1,zeilen do
		zeile = mw.text.split(numtab[i], '[%*]' )
		titel = trim(zeile[1])
		clsr  = trim(zeile[2])
		url   = trim(zeile[3] or titel)
		if titel > ' ' then
			local snip = lsr .. clsr
			alles = alles .. '\n' .. '*[[' .. snip .. '\|' .. titel .. ']] · [http://lsr.di.unimi.it/LSR/Item?id=' .. 
			clsr .. ' LSR # ' .. clsr .. ']'
		end
	end
	
	return alles
end
	
function p.xxx(frame)
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die aufrufende Vorlage übergebene Parameter
	local alt = trim(a["alt"] or b["alt"] or '')
	local neu = trim(a["neu"] or b["neu"] or '')
	local n, a, url, titel = getlob(frame,neu,alt)
	local _  = '[[' .. url.. '|GL ' .. n .. ': ' .. titel .. ' (alt: '  .. a .. ')]]'
	return _  --.. url .. titel .. n .. a
end

function getlob(frame,pneu,palt)
	local new = trim(pneu or '')
	local old = trim(palt or '')
	local nrliste = 'Score:Gotteslob'
	
	local nummern = frame:preprocess('{{' .. nrliste .. '}}')
	local numtab  = mw.text.split(nummern, '[%c]' )
	local zeilen  = #numtab
	local i, einlied, j, _, zeile
	
	local alt, neu = '', ''
	
	for i=1,zeilen do
		zeile = mw.text.split(numtab[i], '[%*]' )
		url = zeile[1]
		neu = trim(zeile[2] or '')
		alt = trim(zeile[3] or '---')
		titel = zeile[4] or url
		if new ~= '' and new ~= nil and new == neu then
			return neu, alt, url, titel
		end
		if old ~= '' and old ~= nil and old == alt then
			return neu, alt, url, titel
		end
	end
	
	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, _, ktabs = '', '', {}
	
	for i,v in pairs(a) do  -- direkt per #invoke: übergeben
		if tostring(i):lower() ~= 'vorlage' and v > ' ' then
			--ktabs [i] = trim(v)
			--return 'frame.args: ' .. #a
			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
			--ktabs [i] = trim(v)
			--return 'frame:getParent().args: ' .. #b
			katz = katz .. '|' .. i .. '=' .. trim(v)
		end
	end
	--_ = frame:expandTemplate{ title = c, args = ktabs } 
	katz = '{{' .. c .. katz .. '}}'
	_ = katz
	--_ = katz .. '<div></div>' .. frame:expandTemplate{ title = c, args = ktabs }
	--_ = frame:expandTemplate{ title = c, args = ktabs }
	return frame:preprocess(_)
end
	
function p.page(frame)
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter
	local width = a.width or b.width or 'auto'
	local text  = a.text or b.text or 'Beschreibung fehlt'
	local ws    = a.ws or b.ws or 'pre-wrap'
	local lsr = "LSR/"
	local clsr, alsr = tab.clsr, tab.alsr  -- zuweisen der Tabellenwerte mit Nummer und Titel des Snippets; Nr wäre eigentlich nicht nötig
	local mytab = ta.alsr
	return #mytab .. type(mytab)
end
	
function p.lsr(frame)
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter
	local lsr = "LSR/"
	local found, snip, alles, nicht, titel = '', '', '', '', ''

	local nlsr = tab.nlsr
	local tlsr = tab.tlsr
	local clsr = tab.clsr

	local nlsr, tlsr, clsr, alsr = tab.nlsr, tab.tlsr, tab.clsr, tab.alsr

	for i=1, clsr do
		local snip = lsr .. alsr[i][2]
		alles = alles .. '\n' .. '*[[' .. snip .. '\|LSR Nr ' .. alsr[i][2] .. ': ' .. alsr[i][1] .. ']] · [http://lsr.di.unimi.it/LSR/Item?id=' .. 
		alsr[i][2] .. ' LSR # ' .. alsr[i][2] .. ']'
	end
	if 1 then return frame:preprocess(alles) end	
	for i=1,4 do
		snip = lsr .. nlsr[i]
		txt  = tlsr[i]
		nicht = 'LSR ' .. nlsr[i] .. txt .. ' gibts nicht'
		if upros.gibts(snip) 
		then titel = '*[[' .. snip .. '\|LSR Nr ' .. nlsr[i] .. ': ' .. tlsr[i] .. ']]'
		else titel = nicht end
		alles = alles .. '\n' .. titel
	end
	return #nlsr .. nlsr[1] .. clsr --frame:preprocess(alles)
end

function p.rezept(frame)
	-- kategorisiert in alle übergebenen Parameter
	-- die Variable a enthält alle Parameter, die im #invoke: Statement stehen
	-- die Variable b enthält die Parameter, die an die Vorlage übergeben werden, die das #invoke: Statement aufruft
	-- z.B. die Vorlage {{Scheme}} ruft cats mit dem Parameter Scheme auf: 
	-- {{#invoke:Hili|cats|Scheme}} frame.args enthält i=1, v=Scheme
	-- {{Scheme|Grobs}}             frame:getParent().args i=1, v=Grobs

	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter
	
	local katz = ''
	
	return '<a href="https://de.wikipedia.org">testlink</a>'

end

function p.hili(frame)
	--local a = mw.getCurrentFrame():getParent().args  -- kann nur über Vorlage aufgerufen werden, die Parameter der Vorlage werden durchgereicht
	--if empty(a) then a = mw.getCurrentFrame().args end
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter
	
	local mus = '(lambda (x) (+ x x))'
	local _lang = a.lang or 'scheme'
	for k, v in pairs(a) do
		if string.lower(k) ~= "lang" then -- damit kann der Parameter beliebig benannt werden, nur lang wird ausgenommen
			mus = v 
			break 
		end
	end

	local b = frame:extensionTag { name = 'syntaxhighlight', content = mus, args = { lang = _lang } }
	return b
end

function p.hilio(frame)
	local a = mw.getCurrentFrame():getParent().args  -- kann nur über Vorlage aufgerufen werden, die Parameter der Vorlage werden durchgereicht
	if empty(a) then a = mw.getCurrentFrame().args end
	
	local mus = '(lambda (x) (+ x x))'
	local _lang = a.lang or 'latex'
	for k, v in pairs(a) do
		if string.lower(k) ~= "lang" then -- damit kann der Parameter beliebig benannt werden, nur lang wird ausgenommen
			mus = v 
			break 
		end
	end

	local b = frame:extensionTag { name = 'syntaxhighlight', content = mus, args = { lang = _lang } }
	return '{{Only|1=' .. b .. '}}'
end

function mehr(u, v)
	local u = u or 'u ist leer'
	local v = v or 'v ist leer'
	local a="a"
	local b="b"
	return u, v
end

function gibts(name, namespace)
  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

function empty (self)
    for _, _ in pairs(self) do
        return false
    end
    return true
end

function trim(s)
  -- from PiL2 20.4
  if s == nil then return '' end
  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

return p