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 +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
|