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
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
|