You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.3 KiB
Lua

local table = table
local pairs = pairs
return function(...)
local rules = {...}
return {
messages = {
affirmative = {
standard = "Some rules must pass for {{placeholder}}",
all = "All rules must pass for {{placeholder}}"
},
negative = {
standard = "Some rules cannot pass for {{placeholder}}",
all = "All rules cannot pass for {{placeholder}}"
}
},
add_rule = function(self, rule)
table.insert(rules, rule)
return self
end,
get_rules = function()
return rules
end,
apply = function(context)
local failures = 0
context.result = true
if #rules == 0 then
return
end
for _, rule in pairs(rules) do
local child_context = context:new_child(rule)
child_context:apply_rule()
if child_context.result == false then
failures = (failures + 1)
context.result = false
end
end
if failures == #rules then
context.template = "all"
end
end
}
end