Modulo:Criteri cancellazione immediata/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
riscrivo
altre migliorie
Riga 163:
 
self.code = code
self.current_ns = Namespace.DEFAULT
self.order = { default = 0 }
self.add_link = false
self.link = { default = string.format('[[WP:IMMEDIATA|%s]]', code) }
self.system_message = { default = '' }
Riga 176 ⟶ 178:
end
 
function Criterion:getLinkgetOrder(ns)
return self.linkorder[nsself.current_ns.id] or self.linkorder.default
end
 
function Criterion:getOrdergetLink(ns)
return self.orderlink[nsself.current_ns.id] or self.orderlink.default
end
 
function Criterion:getSystemMessage(ns, add_link)
return string.format('(%s) %s', pre, definition)
local system_message = self.system_message[ns.id] or self.system_message.default
local pre = self.add_link and self:getLink(ns) or self:getCode(),
local system_message = self.system_message[nsself.current_ns.id] or self.system_message.default)
 
return string.format('(%s) %s', pre, system_message)
end
 
function Criterion:getDefinition(ns, add_link)
return string.format('(%s) %s', pre, system_message)
local definition = self.definition[ns.id] or self.definition.default
local pre = self.add_link and self:getLink(ns) or self:getCode(),
local definition = self.definition[nsself.current_ns.id] or self.definition.default)
 
return string.format('(%s) %s', pre, definition)
end
 
function Criterion:isValid(ns)
if self.validity[nsself.current_ns.id] ~= nil then
return self.validity[nsself.current_ns.id]
elseif self.validity[nsself.current_ns.type.value] ~= nil then
return self.validity[nsself.current_ns.type.value]
else
return self.validity.default
Riga 208:
end
 
function Criterion:setLinksetCurrentNs(link, ns)
self.link[ns.id]current_ns = linkns
return self
end
 
function Criterion:setOrder(order, ns)
self.order[nsself.current_ns.id] = order
return self
end
 
function Criterion:setSystemMessagesetAddLink(text, nsadd_link)
self.system_message[ns.id]add_link = textadd_link
return self
end
 
function Criterion:setDefinitionsetLink(text, nslink)
self.definitionlink[nsself.current_ns.id] = textlink
return self
end
 
function Criterion:setValidForNssetSystemMessage(valid, nstext)
self.validitysystem_message[nsself.current_ns.id] = validtext
return self
end
 
function Criterion:setDefinition(text)
self.definition[self.current_ns.id] = text
return self
end
 
function Criterion:setValid(valid)
self.validity[self.current_ns.id] = valid
return self
end
 
function Criterion:setValidForNsType(valid, ns_type)
self.validity[ns_type.value] = valid
return self
end
 
Riga 236 ⟶ 252:
-- =============================================================================
 
local function to_criterion(keycriterion_code, valuecriterion_cfg)
local criterion = Criterion:new(keycriterion_code)
 
for ns, props in pairs(valuecriterion_cfg) do
ns = Namespace.findByName(ns)
 
if ns and type(props) == 'table' then
criterion:setCurrentNs(ns)
 
if type(props.ordine) == 'number' then
criterion:setOrder(props.ordine, ns)
end
 
if type(props.link) == 'string' then
criterion:setLink(props.link, ns)
end
 
if type(props.testi) == 'table' then
for ktext_type, vtext in pairs(props.testi) do
local text_type = TextType.findByArg(ktext_type)
 
if text_type then
criterion[text_type.set](criterion, v, nstext)
end
end
Riga 263 ⟶ 281:
if ns == Namespace.DEFAULT then
if type(props['validità']) == 'table' then
for kns_type, vvalid in pairs(props['validità']) do
local ns_type = NamespaceType.findByValue(kns_type)
 
if ns_type and type(vvalid) == 'boolean' then
criterion:setValidForNsType(vvalid, ns_type)
end
end
end
elseif type(props['validità']) == 'boolean' then
criterion:setValidForNssetValid(props['validità'], ns)
end
end
Riga 278 ⟶ 296:
 
return criterion
end
 
local comp = function compare_criteria(a, b)
if a:getOrder(ns) == b:getOrder(ns) then
return a:getCode() < b:getCode()
else
return a:getOrder(ns) < b:getOrder(ns)
end
end
 
Riga 324 ⟶ 350:
local ns, criterion_code, add_link = args.ns, args.criterio, args.link
 
if criterion_code == nil or cfg[criterion_code] == nil or ns == nil then
return
end
 
local criterion = to_criterion(keycriterion_code, valuecfg[criterion_code])
for key, value in pairs(cfg) do
local criterion = to_criterion(key, value)
 
criterion:setCurrentNs(ns):setAddLink(add_link)
if criterion:getCode() == criterion_code and criterion:isValid(ns) then
 
return criterion[text_type.get](criterion, ns, add_link)
if criterion:isValid() then
end
return criterion[text_type.get](criterion, ns, add_link)
end
end
Riga 350 ⟶ 376:
local valid_criteria = {}
 
for keycriterion_code, valuecriterion_cfg in pairs(cfg) do
local criterion = to_criterion(keycriterion_code, valuecriterion_cfg)
 
criterion:setCurrentNs(ns):setAddLink(add_link)

if criterion:isValid(ns) and suppressed_criteria[criterion:getCode()] == false then
table.insert(valid_criteria, criterion)
end
end
 
table.sort(valid_criteria, compcompare_criteria)
local comp = function (a, b)
if a:getOrder(ns) == b:getOrder(ns) then
return a:getCode() < b:getCode()
else
return a:getOrder(ns) < b:getOrder(ns)
end
end
 
table.sort(valid_criteria, comp)
 
for _, criterion in ipairs(valid_criteria) do
Riga 375 ⟶ 395:
end
 
list = list .. criterion[text_type.get](criterion, ns, add_link)
end