alakazam 0.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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