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
59 60 61 62 63 64 |
# File 'lib/rulezilla/dsl.rb', line 59 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
53 54 55 56 57 |
# File 'lib/rulezilla/dsl.rb', line 53 def apply(record = {}) result_node = trace(record).last result_node&.result(record_klass_instance(record)) end |
#include_rule(rule) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/rulezilla/dsl.rb', line 76 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
49 50 51 |
# File 'lib/rulezilla/dsl.rb', line 49 def mandatory_attributes @mandatory_attributes ||= [] end |
#results(record = nil) ⇒ Object
66 67 68 |
# File 'lib/rulezilla/dsl.rb', line 66 def results(record = nil) tree.all_results(record_klass_instance(record)).uniq end |
#trace(record = nil) ⇒ Object
70 71 72 73 74 |
# File 'lib/rulezilla/dsl.rb', line 70 def trace(record = nil) validate_missing_attributes(record) tree.trace(record_klass_instance(record)) end |
#tree ⇒ Object
84 85 86 |
# File 'lib/rulezilla/dsl.rb', line 84 def tree @tree ||= Tree.new(Node.new) end |