alakazam 0.4 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7e546b8e9b56aa661e5dc502703e3ff6d8a516a
4
- data.tar.gz: cba0f10b5cd8f9348bbac287a1b0780f4bd22fed
3
+ metadata.gz: 80c74b1273f97a6ac30b80d1b50441c7d695803f
4
+ data.tar.gz: 7f4e8a68a42266d71c80f3ecb3ea65f1c01e33ab
5
5
  SHA512:
6
- metadata.gz: 895345f8dc171978d18f048807f5aa0e91c85cb64db60217bf161b4d8cbc5c401f7f01a4bdb5484fc37c5323ba36e4bd9b6705d33550ee14057b4e552150d144
7
- data.tar.gz: d93f479e6621557200d303cd74186705f721b57a392467bc1688d4d9c014f1537c7371c9b9afb61b3d2696f6423ab997be33e77d362ed5d3267697a2ab6ecc4a
6
+ metadata.gz: 75f09ac8cdf9858df87308e33e4740fd889dbbabaad8cae06ba4aed31d5a72771ee962a58c467fbbedd1d8df9d899fbc88b6e51467c307c35866f9ba9025fc84
7
+ data.tar.gz: c3e1eacc06e38a51efe7cd265763f9a0ac9e3b327ae360e2dedd564568a7576400579e9e703230ea48597eef73f5a35a88181bc5e4cd0998e9d3aaa7109f79d1
@@ -34,27 +34,22 @@ module Alakazam
34
34
  end
35
35
  }
36
36
 
37
- @observers ||= {}
38
- @observers[observer] = { on_change: on_change, methods: methods }
37
+ __observers__[observer] = { on_change: on_change, methods: methods }
39
38
  end
40
39
  alias_method :is_observed_by, :add_observer
41
- alias_method :attach, :add_observer
42
- alias_method :observe, :add_observer
43
40
 
44
41
  def delete_observer(observer)
45
- @observers.delete(observer) if @observers
42
+ __observers__.delete observer
46
43
  end
47
44
  alias_method :remove_observer, :delete_observer
48
- alias_method :detach, :delete_observer
49
- alias_method :disconnect, :delete_observer
50
45
 
51
46
  def has_observer?(observer)
52
- @observers.include?(observer) if @observers
47
+ __observers__.include? observer
53
48
  end
54
49
  alias_method :is_observed_by?, :has_observer?
55
50
 
56
51
  def count_observers
57
- @observers ? @observers.length : 0
52
+ __observers__.length
58
53
  end
59
54
  alias_method :how_many_observers?, :count_observers
60
55
 
@@ -75,7 +70,7 @@ module Alakazam
75
70
  alias_method :fired?, :changed?
76
71
 
77
72
  def notify_observers(*things)
78
- @observers.each { |observer, options|
73
+ __observers__.each { |observer, options|
79
74
  if !options[:on_change] || changed?
80
75
  if options[:methods].any?
81
76
  options[:methods].each { |method|
@@ -95,10 +90,15 @@ module Alakazam
95
90
  }
96
91
  end
97
92
  end
98
- } if @observers
93
+ }
99
94
 
100
95
  @changed = false
101
96
  end
102
97
  alias_method :notify, :notify_observers
103
98
  alias_method :fire, :notify_observers
99
+
100
+ private
101
+ def __observers__
102
+ @observers ||= {}
103
+ end
104
104
  end
@@ -9,5 +9,5 @@
9
9
  #++
10
10
 
11
11
  module Alakazam
12
- VERSION = '0.4'
12
+ VERSION = '0.4.1'
13
13
  end
@@ -122,4 +122,17 @@ describe Alakazam do
122
122
  shiftry.lal.should be 4
123
123
  }.counter.should be 2
124
124
  end
125
+
126
+ it 'handles correctly the observers of the observed class' do
127
+ shiftry.is_observed_by Logger.new
128
+ shiftry.is_observed_by logger
129
+
130
+ shiftry.has_observer?(logger).should be true
131
+ shiftry.count_observers.should be 2
132
+
133
+ shiftry.delete_observer logger
134
+ shiftry.count_observers.should be 1
135
+
136
+ expect { shiftry.__observers__ }.to raise_error
137
+ end
125
138
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alakazam
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Capuano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-02 00:00:00.000000000 Z
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake