Class: Userbin::Events

Inherits:
Object
  • Object
show all
Defined in:
lib/userbin/events.rb

Class Method Summary collapse

Class Method Details

.callbacksObject



35
36
37
# File 'lib/userbin/events.rb', line 35

def self.callbacks
  @callbacks ||= []
end

.on(*names, &block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/userbin/events.rb', line 6

def self.on(*names, &block)
  pattern = Regexp.union(names.empty? ? TYPE_LIST.to_a : names)
  callbacks.each do |callback|
    if pattern == callback.pattern
      callbacks.delete(callback)
      callbacks << Userbin::Callback.new(pattern, block)
      return
    end
  end
  callbacks << Userbin::Callback.new(pattern, block)
end

.trigger(raw_event) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/userbin/events.rb', line 18

def self.trigger(raw_event)
  event = Userbin::Event.new(raw_event)
  callbacks.each do |callback|
    if event.type =~ callback.pattern
      object = case event['type']
      when /^user\./
        Userbin::User.new(event.object)
      else
        event.object
      end
      model = event.instance_exec object, &callback.block
    end
  end
end