Class: DomainDriven::Criteria

Inherits:
Object
  • Object
show all
Defined in:
lib/domain_driven/criteria.rb

Instance Method Summary collapse

Constructor Details

#initializeCriteria

Returns a new instance of Criteria.



23
24
25
# File 'lib/domain_driven/criteria.rb', line 23

def initialize()
  @chain = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object



51
52
53
# File 'lib/domain_driven/criteria.rb', line 51

def method_missing(sym, *args, &block)
  self.add(sym.to_sym, *args)  
end

Instance Method Details

#add(name, *args) ⇒ Object

sugar



35
36
37
# File 'lib/domain_driven/criteria.rb', line 35

def add(name, *args)
  add_message(DomainDriven::Message.new(name, *args))
end

#chainObject



64
65
66
# File 'lib/domain_driven/criteria.rb', line 64

def chain
  @chain
end

#findObject



60
61
62
# File 'lib/domain_driven/criteria.rb', line 60

def find(*)
  raise "not supported"  
end

#loadObject

override Kernal.load



56
57
58
# File 'lib/domain_driven/criteria.rb', line 56

def load
  self.add(:load)  
end

#merge(criteria) ⇒ Object



27
28
29
30
31
32
# File 'lib/domain_driven/criteria.rb', line 27

def merge(criteria)
  criteria.chain.each do |e| 
    add_message(e)
  end
  self
end

#send_to(target) ⇒ Object



44
45
46
47
48
49
# File 'lib/domain_driven/criteria.rb', line 44

def send_to(target)   
  @chain.each do |e| 
    target = target.send(*(e.sendable))
  end      
  target
end

#to_sObject



39
40
41
42
# File 'lib/domain_driven/criteria.rb', line 39

def to_s
  return '' if @chain.empty?
  "target." + @chain.map(&:to_s).join('.') 
end