Modulo:Collegamenti esterni: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m ripristino, era solo un typo |
semplifico gestione qualificatori riconosciuti e metodo di aggiunta categorie; fix categoria doppioni omessi |
||
Riga 29:
local catExcessiveLoad = 'Voci con template Collegamenti esterni e molte entità Wikidata caricate'
local catDuplicates = 'Voci con template Collegamenti esterni e doppioni disattivati'
-- Tabella dei qualificatori riconosciuti
-- Qui vanno elencati solo quelli generali, validi per tutte le dichiarazioni
-- Ciascuno ha la sua configurazione che può essere lasciata vuota o compilata come di seguito:
-- "par" è il parametro del modulo Citazione da compilare col qualificatore
-- "fallback" è una sottotabella coi qualificatori di ripiego in ordine di priorità
-- "restricted" è true se il qualificatore impone una citazione diversa per url a stesso sito
local knownQualifiers = {
-- item o stringa dell'autore
P50 = { par = 'autore', fallback = { 'P2093' }, restricted = true },
P478 = { par = 'volume', restricted = true },
P304 = { par = 'pagina', restricted = true },
P577 = { par = 'data', restricted = true },
-- titolo o "indicato come" o "riferito come" o pseudonimo
P1476 = { par = 'titolo', fallback = { 'P1810', 'P1932', 'P742' } },
-- url archiviato, solo per le proprietà di tipo URL
P1065 = { par = 'archivio' }, P2960 = { par = 'dataarch' }, P582 = { par = 'urlmorto' },
P407 = {}, P813 = {}
}
-- I qualificatori di ripiego sono automaticamente aggiunti con configurazione vuota
for _, t in pairs(knownQualifiers) do
if t.fallback then
for _, v in ipairs(t.fallback) do knownQualifiers[v] = {} end
end
end
-- =============================================================================
Riga 282 ⟶ 306:
return self
end
-- Formatta e carica una o più categorie di servizio.
function LinksManager:_addCategory(...)
for _, category in pairs({ ... }) do
if category then
category = string.format('[[%sCategoria:%s]]', self.catColon, category)
table.insert(self.categories, category)
end
end
end
Riga 318 ⟶ 352:
for k, v in pairs(t2) do rawset(t1, k, v) end
end })
local duplicates = false -- per categoria temporanea
for _, groupName in ipairs(orderedGroupNames) do -- per ogni gruppo tematico
Riga 342 ⟶ 362:
for _, linkConf in ipairs(cfg[groupName]) do -- per ogni sito configurato
local claims, valido
-- se il sito non è escluso manualmente dall'utente,
if not (self:_Escluso(linkConf.pid, self.soloprop) or
self:_Escluso(lang:ucfirst(linkConf.medium or 'web'), self.solomedium)) then
claims = mWikidata._getClaims(linkConf.pid, { from = self.from })
end
-- controlla se ci sono valori
Riga 376 ⟶ 379:
else
valido = true
end
-- controlla che il link non sia generato da altri template in voce
if linkConf.template then
for template in mw.text.gsplit(linkConf.template, ',') do
template = mw.text.trim(template):gsub(' +', ' +')
local first_char = template:match('^.')
first_char = string.format('[%s%s]', first_char:upper(), first_char:lower())
if pageContent:match('{{%s*' .. template:gsub('^.', first_char) .. '%s*[|}]') then
valido, duplicates = false, true
break
end
end
end
end
Riga 384 ⟶ 399:
-- per ogni dichiarazione
for i, claim in ipairs(claims) do
for k, t in pairs(
if t.par then
extraConf[ local properties = { k, t.fallback and unpack(t.fallback) or nil }
-- ricava i qualificatori generali e ne tiene il conto
for _, v in ipairs(properties) do
extraConf[t.par][i] = mWikidata._formatQualifiers(claim, v) or
t.par == 'urlmorto' and
mWikidata._formatQualifiers(claim, v, { snaktype = 'somevalue' }) or nil if extraConf[
extraConf[
extraConf.restrictedData = true
end
break
end
end
end
end
if claim.qualifiers then
-- cerca un disambiguante per il titolo di ogni url
for qualifierId in mw.text.gsplit(linkConf.multi or '', '
if qualifierId == '' then break
qualifierId = mw.text.trim(qualifierId):upper()
if extraConf.titolodis[i] == nil and claim.qualifiers[qualifierId] then
local args = { nq = '1', formatting = 'raw' }
Riga 412 ⟶ 434:
end
end
end
-- categoria di servizio in presenza di qualificatori non riconosciuti
for qualifierId in pairs(claim.qualifiers) do
if not (knownQualifiers[qualifierId]
break
end
Riga 432 ⟶ 454:
end
table.insert(url, (claim:gsub(' ', '%%20')))
end
-- nome sito, di default il dominio estratto dall'url
Riga 450 ⟶ 464:
extraConf.titolo.count < #url - 1 and
catMultiSenzaQual or catLetta
self:_addCategory(linkConf.pid .. tail)
-- per verificare se un sito è ripetuto nel gruppo
groupSites[groupName][extraConf.sito] = (groupSites[groupName][extraConf.sito] or 0) + 1
Riga 468 ⟶ 482:
end
end
--
local catnumero = self.numExtLinks == 0 and catEmpty or
self.numExtLinks > MOLTI_LINK and catMoltiLink
self:_addCategory(catnumero,
#loadedEntities > 100 and catExcessiveLoad,
duplicates and catDuplicates)
return ret
end
|