Modulo:Ns has subpages

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

Questo modulo trova se un namespace può avere le sottopagine.

Uso

Tramite wikitesto

Tramite wikitesto questo modulo può essere usato includendo il {{Ns has subpages}}. Per favore guarda il template per maggiori informazioni.

Tramite Lua

Di solito i moduli Lua dovrebbero usare mw.site.namespaces[namespace].hasSubpages piuttosto che questo modulo. Ma se c'è una buona ragione, può essere richiamato con:

Carica il modulo:

local mNsHasSubpages = require('Module:Ns has subpages')

Le informazioni sulla sottopagina possono essere trovate con ._main function:

mNsHasSubpages._main(ns, frame)
  • ns è il nome del namespace, il suo numero, o il nome di una pagina. Di default è il nome del namespace.
  • frame è un frame object con cui possiamo richiamare frame:callParserFunction se necessario. Questo è opzionale, e pensato per uso interno.

-- Questo modulo implementa [[Template:Ns has subpages]].
-- Mentre il tempalte è estremamente semplice, questa informazione è resa
-- direttamente disponibili con Lua, in questo modo non srà necessario aggiornare 
-- il template ogni volta che viene aggiunto un nuovo namespace.

-- DA [[w:en:Special:Permalink/637438142]]

local p = {}

function p._main(ns, frame)
	-- Recupera il Namespace corrente se non fosse stato specificato.
	if not ns then
		ns = mw.title.getCurrentTitle().namespace
	end

	-- Controlla la tavola dei namespace da mw.site.namespaces. Questo dovrebbe
	-- funzionare per la maggior parte dei casi.
	local nsTable = mw.site.namespaces[ns]

	-- Prova ad usare la corrispondenza delle stringhe per ottenere il namespace 
	-- dal nome della pagina.
	-- Do a quick and dirty bad title check to try and make sure we do the same
	-- thing as {{NAMESPACE}} in most cases.
	if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then
		local nsStripped = ns:gsub('^[_%s]*:', '')
		nsStripped = nsStripped:gsub(':.*$', '')
		nsTable = mw.site.namespaces[nsStripped]
	end

	-- Se non trova corrispondenza prova la funzione parser {{NAMESPACE}},
	-- che dovrebbe trovare il resto dei casi. Non usare mw.title object,
	-- in quanto sarebbe troppo costoso per ogni nuova pagina testata.
	if not nsTable then
		frame = frame or mw.getCurrentFrame()
		local nsProcessed = frame:callParserFunction('NAMESPACE', ns)
		nsTable = nsProcessed and mw.site.namespaces[nsProcessed]
	end
	
	return nsTable and nsTable.hasSubpages
end

function p.main(frame)
	local ns = frame:getParent().args[1]
	if ns then
		ns = ns:match('^%s*(.-)%s*$') -- trim whitespace
		ns = tonumber(ns) or ns
	end
	local hasSubpages = p._main(ns, frame)
	return hasSubpages and 'yes' or ''
end

return p