Module:Protection banner: Difference between revisions

see if this is possible with just two options
Enwikipedia>Mr. Stradivarius
(logic fix)
Enwikipedia>Mr. Stradivarius
(see if this is possible with just two options)
Line 139:
-- rule for every idiosyncracy that was in the old template system.
local keyTable = {protType, protLevel, namespace, reason, expiry}
local attemptOrder = {
-- type, level, ns, reason, expiry
{true, true, true, true, true}, -- 1
{true, true, true, true, false}, -- 2
{true, true, false, true, true}, -- 3
{true, true, true, false, true}, -- 4
{true, true, false, true, false}, -- 5
{true, true, true, false, false}, -- 6
{true, true, false, false, true}, -- 7
{true, false, true, true, true}, -- 8
{true, false, true, true, false}, -- 9
{true, false, false, true, true}, -- 10
{true, false, true, false, true}, -- 11
{true, false, false, true, false}, -- 12
{true, false, true, false, false}, -- 13
{true, false, false, false, true}, -- 14
{true, false, false, false, false}, -- 15
{false, false, false, false, false} -- 16
}
local reasonBehaviors = {
Line 164 ⟶ 145:
blp = 'reasonFirst',
sock = 'reasonFirst',
office = 'reasonOnlyreasonFirst',
}
 
local reasonBehavior = reasonBehaviors[reason]
local attemptOrder = {
if reasonBehavior == 'reasonOnlyreasonFirst' then
local attempt = cats[reason]
attemptOrder = {
if attempt then
-- type, level, ns, reason, expiry
return attempt
{true, true, true, true, true}, -- 1
else
{true, true, true, true, false}, -- 2
error('the category for key "' .. reason .. '" is undefined')
{true, true, false, true, true}, -- 3
end
{true, true, false, true, false}, -- 54
{true, false, true, true, true}, -- 85
{true, false, true, true, false}, -- 96
{true, false, false, true, true}, -- 107
{true, false, false, true, false}, -- 128
{false, false, false, true, false}, -- 9
{true, true, true, false, true}, -- 10
{true, true, true, false, false}, -- 11
{true, true, false, false, true}, -- 712
{true, false, true, false, true}, -- 1113
{true, false, true, false, false}, -- 1314
{true, false, false, false, true}, -- 1415
{true, false, false, false, false}, -- 1516
{false, false, false, false, false} -- 1617
}
elseif reasonBehavior == 'namespaceFirst' then
attemptOrder = {
-- Sort the order so that namespace keys are checked before reason matches.
-- type, level, ns, reason, expiry
attemptOrder[3], attemptOrder[4] = attemptOrder[4], attemptOrder[3]
{true, true, true, true, true}, -- 1
attemptOrder[5], attemptOrder[6] = attemptOrder[6], attemptOrder[5]
{true, true, true, true, false}, -- 2
elseif reasonBehavior ~= 'reasonFirst' and reason ~= 'all' then
{true, true, true, false, true}, -- 43
{true, true, true, false, false}, -- 64
{true, false, true, true, true}, -- 5
{true, false, true, true, false}, -- 6
{true, false, true, false, true}, -- 7
{true, false, true, false, false}, -- 8
{false, false, true, false, false}, -- 9
{true, true, false, true, true}, -- 10
{true, true, false, true, false}, -- 11
{true, true, false, false, true}, -- 12
{true, false, false, true, true}, -- 13
{true, false, false, true, false}, -- 14
{true, false, false, false, true}, -- 15
{true, false, false, false, false}, -- 16
{false, false, false, false, false} -- 17
}
elseif reasonBehavior ~= 'reasonFirst' and reason ~= 'all' then
error(reason .. ' is not a valid reason')
end