Module: WaveBox::GenerateWave

Defined in:
lib/wave_box/generate_wave.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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



3
4
5
6
7
8
9
10
11
# File 'lib/wave_box/generate_wave.rb', line 3

def method_missing(method, *args, &block)
  if method.to_s =~ /generated_(\w+)_after/
    generated_after( $1, *args )
  elsif method.to_s =~ /generate_(\w+)/
    generate( $1, *args)
  else
    super
  end
end

Class Method Details

.included(host) ⇒ Object



81
82
83
# File 'lib/wave_box/generate_wave.rb', line 81

def self.included(host)
  host.extend ClassMethods
end

Instance Method Details

#generate(name, wave, receiver, time = Time.now, options = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/wave_box/generate_wave.rb', line 18

def generate(name, wave, receiver, time = Time.now, options = {})
  send("#{name}_outbox").push wave, time unless options[:outbox] == false

  if receiver.respond_to? :each
    receiver.each do |rec|
      rec.receive(name, wave, time)
    end
  else
    receiver.receive(name, wave, time)
  end
end

#generated_after(name, time) ⇒ Object



30
31
32
# File 'lib/wave_box/generate_wave.rb', line 30

def generated_after(name, time)
  send("#{name}_outbox").after(time)
end

#respond_to_missing?(method) ⇒ Boolean

method missing with good manner

Returns:

  • (Boolean)


14
15
16
# File 'lib/wave_box/generate_wave.rb', line 14

def respond_to_missing?(method, *)
  (method =~ /generated_(\w+)_after/) || (method =~ /generate_(\w+)/) || super
end