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 +4 -4
- data/lib/alakazam/alakazam.rb +11 -11
- data/lib/alakazam/version.rb +1 -1
- data/tests/alakazam_spec.rb +13 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80c74b1273f97a6ac30b80d1b50441c7d695803f
|
4
|
+
data.tar.gz: 7f4e8a68a42266d71c80f3ecb3ea65f1c01e33ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75f09ac8cdf9858df87308e33e4740fd889dbbabaad8cae06ba4aed31d5a72771ee962a58c467fbbedd1d8df9d899fbc88b6e51467c307c35866f9ba9025fc84
|
7
|
+
data.tar.gz: c3e1eacc06e38a51efe7cd265763f9a0ac9e3b327ae360e2dedd564568a7576400579e9e703230ea48597eef73f5a35a88181bc5e4cd0998e9d3aaa7109f79d1
|
data/lib/alakazam/alakazam.rb
CHANGED
@@ -34,27 +34,22 @@ module Alakazam
|
|
34
34
|
end
|
35
35
|
}
|
36
36
|
|
37
|
-
|
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
|
-
|
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
|
-
|
47
|
+
__observers__.include? observer
|
53
48
|
end
|
54
49
|
alias_method :is_observed_by?, :has_observer?
|
55
50
|
|
56
51
|
def count_observers
|
57
|
-
|
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
|
-
|
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
|
-
}
|
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
|
data/lib/alakazam/version.rb
CHANGED
data/tests/alakazam_spec.rb
CHANGED
@@ -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:
|
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-
|
11
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|