Changes
Jump to navigation
Jump to search
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
}
see if this is possible with just two options
-- rule for every idiosyncracy that was in the old template system.
local keyTable = {protType, protLevel, namespace, reason, expiry}
local reasonBehaviors = {
blp = 'reasonFirst',
sock = 'reasonFirst',
office = 'reasonOnlyreasonFirst',
}
local reasonBehavior = reasonBehaviors[reason]
local attemptOrder if reasonBehavior == 'reasonOnlyreasonFirst' then local attempt attemptOrder = cats[{ -- 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, false, true, false}, -- 4 {true, false, true, true, true}, -- 5 {true, false, true, true, false}, -- 6 {true, false, false, true, true}, -- 7 {true, false, false, true, false}, -- 8 {false, false, false, true, false}, -- 9 {true, true, true, false, true}, -- 10 if attempt then {true, true, true, false, false}, -- 11 {true, true, false, false, true}, -- 12 {true, false, true, false, true}, -- 13 {true, false, true, false, false}, -- 14 return attempt{true, false, false, false, true}, -- 15 else {true, false, false, false, false}, -- 16 error('the category for key "' .. reason .. '" is undefined'){false, false, false, false, false} -- 17 end}
elseif reasonBehavior == 'namespaceFirst' then
attemptOrder = { -- Sort the order so that namespace keys are checked before type, level, ns, reason matches., expiry {true, true, true, true, true}, -- 1 {true, true, true, true, false}, -- 2 attemptOrder[ {true, true, true, false, true}, -- 3] {true, true, true, false, attemptOrder[false}, -- 4] = attemptOrder[4] {true, false, true, true, true}, attemptOrder[3] -- 5 attemptOrder[5] {true, false, true, true, false}, attemptOrder[ -- 6] = attemptOrder[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, attemptOrder[5]false} -- 17 } elseif reasonBehavior ~= 'reasonFirst' and reason ~= 'all' then
error(reason .. ' is not a valid reason')
end