Module: Rulezilla::DSL::ClassMethods
- Defined in:
- lib/rulezilla/dsl.rb
Instance Method Summary collapse
- #all(record = {}) ⇒ Object
- #apply(record = {}) ⇒ Object
- #include_rule(rule) ⇒ Object
- #mandatory_attributes ⇒ Object
- #results(record = nil) ⇒ Object
- #trace(record = nil) ⇒ Object
- #tree ⇒ Object
Instance Method Details
#all(record = {}) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/rulezilla/dsl.rb', line 69 def all(record = {}) validate_missing_attributes(record) result_node = tree.find_all(record_klass_instance(record)) result_node&.map { |node| node.result(record_klass_instance(record)) } end |
#apply(record = {}) ⇒ Object
63 64 65 66 67 |
# File 'lib/rulezilla/dsl.rb', line 63 def apply(record = {}) result_node = trace(record).last result_node&.result(record_klass_instance(record)) end |
#include_rule(rule) ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/rulezilla/dsl.rb', line 86 def include_rule(rule) if rule.ancestors.include?(Rulezilla::DSL) tree.clone_and_append_children(rule.tree.root_node.children) else raise "#{rule.name} is not a Rulezilla class" end end |
#mandatory_attributes ⇒ Object
59 60 61 |
# File 'lib/rulezilla/dsl.rb', line 59 def mandatory_attributes @mandatory_attributes ||= [] end |
#results(record = nil) ⇒ Object
76 77 78 |
# File 'lib/rulezilla/dsl.rb', line 76 def results(record = nil) tree.all_results(record_klass_instance(record)).uniq end |
#trace(record = nil) ⇒ Object
80 81 82 83 84 |
# File 'lib/rulezilla/dsl.rb', line 80 def trace(record = nil) validate_missing_attributes(record) tree.trace(record_klass_instance(record)) end |
#tree ⇒ Object
94 95 96 |
# File 'lib/rulezilla/dsl.rb', line 94 def tree @tree ||= Tree.new(Node.new) end |