Vorlage:Lua/scale

Zur Navigation springen Zur Suche springen
function p.scale(frame)
	local a = mw.getCurrentFrame():getParent().args     -- bei Aufruf über Vorlage ist :getParent(). erforderlich
	if empty(a) then a = mw.getCurrentFrame().args end  -- entweder Direktaufruf oder über Vorlage, so bin ich für alles gerüstet

	local pre  = a.pre or a[1] or 'Lua/scale'
	local suf  = a.suf or a[2] or 'Dur' 
	local art  = a.art or a.geschlecht or a[3] or 'dur' 
	local link = a.link or a[4] or ''                              -- Linkbeschriftung
	local templ = a.template or a.templ or a.vorlage or a[5] or '' -- soll eine Vorlage angewendet oder nur ein Link erzeugt werden
	local trenn = a.trenn or a.trennzeichen or a[6] or '·'         -- das Trennzeichen kann umdefiniert werden
	
	local leiter = {}
	if art == 'dur' then leiter = qidur else leiter = qimol end

	pre = trim(pre) .. ' '
	suf = ' ' .. trim(suf)
	trenn = ' ' .. trenn .. ' '
	
	local page_name = pre .. leiter[1] .. suf
	if link == '' then 
		linkp = page_name 
	else	
		link  = link .. ' '
		linkp = link .. leiter[1] .. suf
	end
	
	qilen = #leiter  -- Zahl der Elemente im Quintenzirkel
	
	local _ = ''
	if templ ~= '' then 
		_ = frame:expandTemplate { title = templ, args = { page_name } } 
		
		for i=2,qilen do
			page_name = pre .. leiter[i] .. suf
			_ = _ .. trenn .. frame:expandTemplate { title = templ, args = { page_name } }
		end
		return _
	end
	
	-- es wurde keine Vorlage angegeben, nur Links erzeugen
	_ = frame:preprocess( '[[' .. page_name .. '|' .. linkp .. ']]' )

	for i=2,qilen  do  -- alle Tonleitern im Quintenzirkel abarbeiten
		page_name = pre .. leiter[i] .. suf
		if link == '' then 
			linkp = page_name 
		else	
			linkp = link .. leiter[i] .. suf
		end
		_ = _ .. trenn .. frame:preprocess( '[[' .. page_name .. '|' .. linkp .. ']]' )
	end
	return _
end

Alle Vorlagen mit Scribunto-Aufrufen: Alle module, Cats, Coco, Countdown, Dokumentation bearbeiten, DurTonleiter, Ensemble, Hili, Hilio, Klavierscore, Lenplus, Lilypond, LSR, Lua/cats, Lua/catx, Lua/eiffel, Lua/ensemble, Lua/hili, Lua/hilio, Lua/lenplus, Lua/lily, Lua/midi, Lua/pianoduet, Lua/rep, Lua/scale, Lua/score, Lua/staffgroup, Lua/svg, Lua/tag, Lua/vb, Midi, Mixi, PHP, Php, Pianoduet, Rep, Scale, Scheme, Score, SQL, Tag, Tonleiter, Vb, Vorlage