Modulo:Ns has subpages
Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Ns has subpages/man (modifica • cronologia)
Sandbox: Modulo:Ns has subpages/Sandbox (modifica•cronologia) • Test: Modulo:Ns has subpages/Test (modifica•cronologia)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Ns has subpages/man (modifica • cronologia)
Sandbox: Modulo:Ns has subpages/Sandbox (modifica•cronologia) • Test: Modulo:Ns has subpages/Test (modifica•cronologia)
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