Module: Rulezilla::DSL::ClassMethods

Defined in:
lib/rulezilla/dsl.rb

Instance Method Summary collapse

Instance Method Details

#all(record = {}) ⇒ Object



57
58
59
60
61
62
# File 'lib/rulezilla/dsl.rb', line 57

def all(record = {})
  validate_missing_attributes(record)
  result_node = tree.find_all(record_klass_instance(record))

  result_node.nil? ? nil : result_node.map { |node| node.result(record_klass_instance(record)) }
end

#apply(record = {}) ⇒ Object



51
52
53
54
55
# File 'lib/rulezilla/dsl.rb', line 51

def apply(record = {})
  result_node = trace(record).last

  result_node.nil? ? nil : result_node.result(record_klass_instance(record))
end

#include_rule(rule) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/rulezilla/dsl.rb', line 74

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_attributesObject



47
48
49
# File 'lib/rulezilla/dsl.rb', line 47

def mandatory_attributes
  @mandatory_attributes ||= []
end

#results(record = nil) ⇒ Object



64
65
66
# File 'lib/rulezilla/dsl.rb', line 64

def results(record = nil)
  tree.all_results(record_klass_instance(record)).uniq
end

#trace(record = nil) ⇒ Object



68
69
70
71
72
# File 'lib/rulezilla/dsl.rb', line 68

def trace(record = nil)
  validate_missing_attributes(record)

  tree.trace(record_klass_instance(record))
end

#treeObject



82
83
84
# File 'lib/rulezilla/dsl.rb', line 82

def tree
  @tree ||= Tree.new(Node.new)
end