Class: Inquirex::Rules::All
Overview
Composite rule: logical AND of multiple sub-rules. All must be true.
Instance Attribute Summary collapse
-
#rules ⇒ Object
readonly
Returns the value of attribute rules.
Class Method Summary collapse
-
.from_h(hash) ⇒ All
Deserializes an All rule, recursively rehydrating its sub-rules.
Instance Method Summary collapse
-
#evaluate(answers) ⇒ Boolean
True when every sub-rule evaluates true (vacuously true when empty).
-
#initialize(*rules) ⇒ All
constructor
A new instance of All.
-
#to_h ⇒ Hash{String => Object}
Wire format with nested rule hashes.
-
#to_s ⇒ String
Human-readable form, sub-rules joined with AND.
Constructor Details
#initialize(*rules) ⇒ All
Returns a new instance of All.
11 12 13 14 15 |
# File 'lib/inquirex/rules/all.rb', line 11 def initialize(*rules) super() @rules = rules.flatten.freeze freeze end |
Instance Attribute Details
#rules ⇒ Object (readonly)
Returns the value of attribute rules.
8 9 10 |
# File 'lib/inquirex/rules/all.rb', line 8 def rules @rules end |
Class Method Details
Instance Method Details
#evaluate(answers) ⇒ Boolean
True when every sub-rule evaluates true (vacuously true when empty).
21 22 23 |
# File 'lib/inquirex/rules/all.rb', line 21 def evaluate(answers) @rules.all? { |rule| rule.evaluate(answers) } end |
#to_h ⇒ Hash{String => Object}
Returns wire format with nested rule hashes.
26 27 28 |
# File 'lib/inquirex/rules/all.rb', line 26 def to_h { "op" => "all", "rules" => @rules.map(&:to_h) } end |
#to_s ⇒ String
Returns human-readable form, sub-rules joined with AND.
31 32 33 |
# File 'lib/inquirex/rules/all.rb', line 31 def to_s "(#{@rules.join(" AND ")})" end |