Vai al contenuto

Modulo:Ns has subpages

Da Wikizionario, il dizionario a contenuto aperto.

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