Module: Observers

Defined in:
lib/keys.rb,
lib/version.rb,
lib/observers.rb,
lib/models/key.rb,
lib/models/observer.rb

Defined Under Namespace

Classes: Key, Keys, Observer

Constant Summary collapse

VERSION =
'0.6.0'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



8
9
10
# File 'lib/observers.rb', line 8

def included(klass)
  klass.extend Observers
end

Instance Method Details

#observe(key, action: nil) ⇒ Object

Add an observer on the observer side.



28
29
30
# File 'lib/observers.rb', line 28

def observe(key, action: nil)
  Keys[key].observe(object: self, action:)
end

#observers(key = self) ⇒ Object

Add an observer on the key side.



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/observers.rb', line 14

def observers(key = self)
  Struct.new(:key) do
    def push(object, action: nil)
      Keys[key].observe(object:, action:)
    end
    alias :<< :push

    def count
      Keys[key].observers.count
    end
  end.new(key)
end

#take(key: self, action: nil, event: nil) ⇒ Object



36
37
38
# File 'lib/observers.rb', line 36

def take(key: self, action: nil, event: nil)
  Keys.fetch(key).take(action:, event:)
end

#trigger(key: self, action: nil, event: nil) ⇒ Object



32
33
34
# File 'lib/observers.rb', line 32

def trigger(key: self, action: nil, event: nil)
  Keys.fetch(key).trigger(action:, event:)
end