Modulo:Categoria principale

Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Categoria principale/man (modifica · cronologia)
Sandbox: Modulo:Categoria principale/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Categoria principale/test (modifica · cronologia · Esegui)
Questo è il Modulo:Categoria principale ed implementa il template {{Categoria principale}} che ricava la categoria principale di una pagina ottenendola dalla proprietà Wikidata categoria principale dell'argomento (P910).
Ad esempio la categoria principale per la voce software libero (Q341) è: Categoria:Software libero.
Uso
Se si ha intenzione di aggiungere automaticamente la categoria principale a tutte le voci che usano un certo sinottico, si può usare il {{Categoria principale}} direttamente in testa al sinottico.
Nel caso in cui tale template sinottico in questione usasse un modulo, per maggiore efficienza allora è meglio adottare questa soluzione direttamente nel modulo di tale sinottico:
local wikitestoCategoriaPrincipale = require('Modulo:Categoria principale')._main()
Documentazione
Metodi forniti dal modulo:
- _main(from)
- Per ottenere il wikitesto pronto da inserire in una pagina per categorizzarla (sempre se ha una categoria principale). Ritorna sempre una stringa, al massimo vuota.
- _hasMainCategory(from)
- Per sapere se la voce ha una categoria principale. Ritorna
true
ofalse
. - _getMainCategory(from)
- Per ottenere il nome della categoria senza wikitesto sotto forma di
Categoria:...
oppurenil
se assente.
Tutti questi metodi supportano il parametro from
che è opzionale. Se specificato è una funzione dispendiosa.
Pagine correlate
local p = {}
local READ = "[[Categoria:P910 letta da Wikidata]]"
local MISS = ''
local CAT = '[[%s| ]]'
function existsInThisWiki(category)
local expected = mw.site.namespaces[14]['name'] .. ':'
local p = mw.title.new( category )
local len = string.len(expected)
return expected == string.sub(category, 0, len) and p.exists
end
local function rawValue(from)
local entity = mw.wikibase.getEntity(from)
if entity == nil then
return nil
end
local value = entity:formatPropertyValues('P910')['value']
return value ~= nil and value ~= '' and existsInThisWiki(value) and value or nil
end
function p._getMainCategory(from)
return rawValue(from)
end
function p._hasMainCategory(from)
return nil ~= p._getMainCategory(from)
end
function p._main(from)
local cat = p._getMainCategory(from)
return cat and string.format(CAT, cat) .. READ or MISS
end
local function getFrom(frame)
return require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Categoria principale'
} ).from
end
function p.getMainCategory(frame)
return p._getMainCategory( getFrom(frame) )
end
function p.hasMainCategory(frame)
return p._hasMainCategory( getFrom(frame) )
end
function p.main(frame)
return p._main( getFrom(frame) )
end
return p