Modulo:Collegamenti esterni: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
correggo titolo a seconda dell'URL come da segnalazione |
implemento vincoli negativi come da discussione e miglioro la rilevazione automatica nel manuale delle proprietà duplicate |
||
Riga 372:
-- controlla se è un sito da escludere per soggetto non pertinente
if type(linkConf.vincolo) == 'table' then
local
for
if i % 2 ~= 0 then
local ms, k = v:match('^(%-?)(.+)$')
valido, loadedEntities[i] = checkEntity(linkConf.vincolo[i - 1], linkConf.vincolo[i], self.from)▼
if
vincolo, tipo = {}, 'pos'
end
if not (tipo == 'pos' and ms == '-') then
vincolo[k] = linkConf.vincolo[i + 1]
end
end
end
for k, v in pairs(vincolo) do
▲ valido, loadedEntities[
if tipo == 'neg' then
valido = not valido
if not valido then break end
elseif valido then
break
end
end
else
Riga 563 ⟶ 578:
-- Funzione di utilità per il manuale, verifica l'assenza di proprietà duplicate.
function p.checkdup(frame)
local ids, vin, res = {}, {}, {}
local cfg = readConfig()
for _, groupName in ipairs(orderedGroupNames) do
for _, linkConf in ipairs(cfg[groupName]) do
if vin[linkConf.pid] == nil then
vin[linkConf.pid] = { pos = {}, neg = {} }
end
if vin[linkConf.pid] ~= false and linkConf.vincolo then
duplicate, vin[linkConf.pid].cur = false, {}
local tipo = 'neg'
for i, v in ipairs(linkConf.vincolo) do
if i % 2 ~= 0 then
local ms, p = v:match('^(%-?)(.+)$')
if tipo == 'neg' and ms == '' then
vin[linkConf.pid].cur, tipo = {}, 'pos'
end
if not (tipo == 'pos' and ms == '-') then
for _, q in ipairs(linkConf.vincolo[i + 1]) do
vin[linkConf.pid].cur[p .. q] = true
end
end
end
end
if tipo == 'pos' then
for k in pairs(vin[linkConf.pid].cur) do
for _, t in ipairs(vin[linkConf.pid].pos) do
if t[k] then duplicate = true break end
end
for _, t in ipairs(vin[linkConf.pid].neg) do
if not t[k] then duplicate = true break end
end
end
else
if #vin[linkConf.pid].neg == 1 then
duplicate = true
else
for _, t in ipairs(vin[linkConf.pid].pos) do
for k in pairs(t) do
if not vin[linkConf.pid].cur[k] then
duplicate = true
break
end
end
end
end
end
table.insert(vin[linkConf.pid][tipo], vin[linkConf.pid].cur)
end
if duplicate then
table.insert(res, linkConf.pid)
else
ids[linkConf.pid] = true
if not linkConf.vincolo then vin[linkConf.pid] = false end
end
end
|