Module:Lilytest

Revision as of 07:53, 17 March 2021 by Lily (talk | contribs)

Documentation for this module may be created at Module:Lilytest/doc

local p = {}
local t = require('Module:Arguments')

function p.nsliste(frame)
	--{{#invoke:Hili|nsliste|ab=}}
	--erzeugt eine Tabelle mit Seitennummer und Namen in einem Namensraum
	--sehr teuer in der Ausführung, daher werden nur 100 Listeneinträge
	--inzwischen habe ich die Zahl der zulässigen Aufrufe in der LocalSettings.php auf 20000 erhöht, also praktisch unlimitiert
	--Parameter: ab/abwo, Zahl ab der gestartet wird
	local a = frame.args              -- direkt per #invoke: übergeben
	if empty(a) then a = mw.getCurrentFrame().args end  -- an die Vorlage übergebene Parameter	

	local _ = ''
	local seite, sname, ns, nstitel
	
	local abwo   = tonumber(a.ab or a.abwo) or 1
	local bishin = tonumber(a.bis or a.bishin) or 100
	local myns   = string.lower(t.tidy(a.ns) or '')
	local __ = '\nmyns: ' .. myns
	
	for i = abwo, bishin do
		seite = mw.title.new(i)
		
		if seite then
			nstitel = string.lower(seite.nsText)
			ns      = tostring(seite.namespace)
			if myns == nstitel or myns == ns then
				_ = _ .. '<tr><td>' .. i .. '</td><td>[[:' .. seite.prefixedText .. '|' .. seite.text .. ']]</td></tr>\n'
			end
			--__ = __ .. '\nns: ' .. ns .. ' nstitel: ' .. nstitel
		end
	end
	_ = '<table class="cute"><tr><th>ID</th><th>Name</th></tr>' .. _ .. '</table>'
	return _ --.. __
end

function p.nrliste(frame)
	--{{#invoke:Hili|nrliste|ab=}}
	--erzeugt eine Tabelle mit Seitennummer und Namen
	--sehr teuer in der Ausführung, daher werden nur 100 Listeneinträge
	--inzwischen habe ich die Zahl der zulässigen Aufrufe in der LocalSettings.php auf 20000 erhöht, also praktisch unlimitiert
	--Parameter: ab/abwo, Zahl ab der gestartet wird
	local a = frame.args              -- direkt per #invoke: übergeben
	if empty(a) then a = mw.getCurrentFrame().args end  -- an die Vorlage übergebene Parameter	

	local _ = ''
	local seite, sname, ns, nstitel
	
	local abwo = tonumber(a.ab or a.abwo) or 1

	for i = abwo, abwo + 99 do
		seite = mw.title.new(i)
		
		if seite then
			nstitel=seite.nsText
			if nstitel == '' then nstitel = 'Artikel' end
			_ = _ .. '<tr><td>' .. i .. '</td><td>[[:' .. seite.prefixedText .. '|' .. seite.text .. ']]</td><td>' .. nstitel .. '</td></tr>\n'
		end
	end
	_ = '<table class="cute"><tr><th>ID</th><th>Name</th><th>Namensraum</th></tr>' .. _ .. '</table>'
	return _
end

function p.getid(frame)
	--{{#invoke:Hili|getid|seite=|ns=}}
	local was = frame.args.seite or frame:getParent().args.seite or 'Lua'  -- Seitentitel
	local ns  = frame.args.ns or frame:getParent().args.ns or ''           -- Namensraum
	local namesp = t.tidy(ns) or 'Artikel'
	local seite = mw.title.new(was, ns)
	
	local _ = seite.id
	if _ == 0 then return 'Seite ' .. was .. ' existiert nicht im Namensraum ' .. namesp end
	namesp = seite.nsText
	local fulln = seite.prefixedText 
	return 'Die Seite ' .. fulln .. ' hat die ID ' ..  _
end
-- {{#invoke:Lilytest|html}}
function p.html(frame)
	local mylink = mw.html.create( 'a' ) 
	mylink
	:attr( 'id', 'testdiv' )
	:attr( 'href', 'https://publictestwiki.com')
	:attr('target', '_blank')
	:wikitext( 'Link Testtext' )
	return tostring( mylink )
end

function p.htmlx(frame)
	local mylink = mw.html.create( 'a' ) 
	mylink
	:attr( 'id', 'testdiv' )
	:attr( 'href', 'https://publictestwiki.com')
	:attr('target', '_blank')
	:wikitext( 'Link Testtext' )
	return mylink
end

function p.simple(frame)
	return '<a href="https://publictestwiki.com" target="_blank">Link Testtext</a>'
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 trim(s)
  -- entfernt Weißraum an den beiden Enden des Strings
  -- wenn kein String als Parameter übergeben wird, wird die Eingabe unverändert zurück gegeben
  if type(s) ~= 'string' then return s end  -- falls kein string
  return (s:gsub("^%s*(.-)%s*$", "%1"))
end

return p