Modul:LSR

Zur Navigation springen Zur Suche springen

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

Unterseiten

erzeugt eine Liste der Lilypond Code Snippets, die hier gespeichert werden

{{LSR}}


local p = {} -- p stands for package
local t = require('Module:Arguments')

local upros = require('Module:Upros')
--local tab   = mw.loadData('Module:LSR/tabelle')
--local tab   = require( "Modul:LSR/tabelle" ) -- damit funktioniert die Parameterübergabe korrekt

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 'normal'
	
	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 ich  = mw.title.getCurrentTitle()
	local llnr = ich.subpageText
	local _    = '\n<div class="blue-gradient fett weiss" style="display: inline-block; padding: 0.5em 1em 0.5em 1em">Code Snippet Nr. ' .. llnr .. 
	' nicht in der <span class="plainlinks">[{{fullurl:Score:LSR|action=edit}} <span class="weiss">Tabellenseite</span>]</span> vorhanden, bitte eintragen</div>\n'
	
	for i=1, #alsr do
		zeile = mw.text.split(alsr[i], '[%*]' )
		titel = trim(zeile[1])
		clsr  = trim(zeile[2])
		if 	clsr == llnr then
			_ = '{{TOC}}{{Überschrift|1='
			_ = _ .. titel .. '}}\n{{Ref|1=http://lsr.di.unimi.it/LSR/Item?id=' .. llnr
			_ = _ .. '|2=LSR Snippet Nr. ' .. llnr .. '|ref=}}\n'

			_ = _ .. '\n== Beschreibung =='
			_ = _ .. '\n<div style="margin-bottom: 1em; white-space: ' .. ws .. '">' .. text .. '\n</div>'
			_ = _ .. '\n<tabber>\nGrafische Ausgabe='
			_ = _ .. '\n{{Bildteil|1=LSR_pic_' .. llnr .. '.png|bildheight=' .. height .. '|height=' .. height .. '|overflow=none}}'
			_ = _ .. '\n|-|\nLilypond Code='
			_ = _ .. '\n<div class="noprint noclick"><div style="display: inline-block">{{#tag:inputbox|'
			_ = _ .. '\ntype=create'
			_ = _ .. '\nbreak=no'
			_ = _ .. '\nwidth={{{weit|20em}}}'
			_ = _ .. '\nbuttonlabel={{{but|Score erstellen/bearbeiten}}}'
			_ = _ .. '\ndefault={{{score|{{FULLPAGENAME}}/code}}}'
			_ = _ .. '\npreload={{{pre|Template:LSR/subpage}}}}}</div></div>'
			_ = _ .. '\n{{:{{PAGENAME}}/code}}'
			_ = _ .. '\n|-|\nLilypond Code Oneclick='
			_ = _ .. '\n<div class="oneclick">{{:{{PAGENAME}}/code}}</div>'
			_ = _ .. '\n</tabber>'
			_ = _ .. '\n==Unterseiten=='
			_ = _ .. '\n<div style="column-count: 3; width: 1000px">\n{{:Special:PrefixIndex/:{{PAGENAME}}/}}\n</div> __NOEDITSECTION__'
		end
	end
	return frame:preprocess(_)
end

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

	local lsr = "LSR/"
	local nrliste = 'Score:LSR'
	local i, url, clsr, zeile
	
	local nummern = frame:preprocess('{{' .. nrliste .. '}}')
	local alsr = mw.text.split(nummern, '[%c]' )  -- Tabelle der Snippets mit Titel und #
	
	local _, titel   = '', ''
	local ich  = mw.title.getCurrentTitle()
	local llnr = ich.subpageText

	for i=1, #alsr do
		zeile = mw.text.split(alsr[i], '[%*]' )
		titel = trim(zeile[1])
		clsr  = trim(zeile[2])
		if 	clsr == llnr then break
		end
	end
	
	_ = t.tidy(titel) or ich
	return _
end

function p.szahl(frame)
  -- ermittelt die Zahl der Snippets
  -- {{#invoke:LSR|szahl}}
  local nrliste = 'Score:LSR'
  local nummern = frame:preprocess('{{' .. nrliste .. '}}')
  local alsr = mw.text.split(nummern, '[%c]' )  -- Tabelle der Snippets mit Titel und #
  return #alsr
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.page(frame)
	-- alte Version mit Tabellenmodul, obsolet
	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 alsr = tab.alsr  -- Tabelle der Snippets mit Titel und #
	
	local _    = '{{TOV}}{{Bluetitle|1='
	local ich  = mw.title.getCurrentTitle()
	local llnr = ich.subpageText
	local lnr  = llnr * 1
	--if height ~= '' then height = 'auto' end
	for i=1, #alsr do
		if 	alsr[i][2] == lnr then
			_ = _ .. alsr[i][1] .. '}}\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 frame:preprocess(_) 
end

function p.lsr(frame)
	-- alte Version mit Tabellenmodul, obsolet
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter
	local lsr = "LSR/"
	local alles = ''
	local clsr, alsr = tab.clsr, tab.alsr  -- zuweisen der Tabellenwerte mit Nummer und Titel des Snippets; Nr wäre eigentlich nicht nötig

	for i=1, clsr do
		local snip = lsr .. alsr[i][2]
		alles = alles .. '\n' .. '*[[' .. snip .. '\|' .. alsr[i][1] .. ']] · [http://lsr.di.unimi.it/LSR/Item?id=' .. 
		alsr[i][2] .. ' LSR # ' .. alsr[i][2] .. ']'
	end
	return frame:preprocess(alles)
end

function p.expand(frame)
	-- 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
	-- {{#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 n = a[1] or b[1] or '271'
	local _ = ''
	local lsr = "LSR/" .. n
	_ = frame:preprocess('{{:' .. lsr .. '}}')
	_ = '{{:' .. lsr .. '}}'
	return _

end

function p.muster(frame)
	-- 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
	-- {{#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 = '+++' .. upros.trim(' a b c   ') .. '+++'
	
	return katz

end

function p.bild(frame)
	local a = frame.args              -- direkt per #invoke: übergeben
	local b = frame:getParent().args  -- an die Vorlage übergebene Parameter
	local height = a.height or b.height or ''
	local ich  = mw.title.getCurrentTitle()
	local llnr = ich.subpageText
	local alsr = tab.alsr

	local lnr  = llnr * 1
	local _ = llnr .. '*' .. lnr .. '*' .. #alsr .. '*' .. alsr[6][2]
	
	--if 1 then return llnr .. '*' .. lnr .. '*' .. #alsr .. '*' .. alsr[6][2] end
	for i=1, #alsr do
		if 	alsr[i][2] == llnr then --or alsr[i][2] == llnr then	
			_ = '{{Bildteil|1=LSR_pic_' .. llnr .. '.png|bildheight=' .. height .. '|height=' .. height .. '|overflow=none}}'
		end
	end
	return '<pre>' .. _ .. '</pre>\n' ..  frame:preprocess(_) 
end

function trim(s)
  if s == nil then return '' end
  return (s:gsub("^%s*(.-)%s*$", "%1"))
end

return p