observe 0.1.0 → 0.2.0
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.
- data/.rbenv-version +1 -0
- data/README.md +26 -0
- data/lib/observe.rb +12 -10
- data/observe.gemspec +1 -1
- data/test/observe_test.rb +1 -1
- metadata +10 -9
data/.rbenv-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.2-p290
|
data/README.md
CHANGED
@@ -26,6 +26,32 @@ __DIFFERENCES__
|
|
26
26
|
If you want to notify observers, go ahead & use `notify_observers`.
|
27
27
|
If there is state that needs to be true before observers can be notified, you can use `if(…)`.
|
28
28
|
|
29
|
+
__FULL DISCLOSURE__
|
30
|
+
|
31
|
+
It can help to know what methods and state is introduced by Observe so your class or module can
|
32
|
+
avoid stepping on the toes of Observe by accident.
|
33
|
+
When you include Observe into a class or module it adds four methods to your class/module:
|
34
|
+
|
35
|
+
|
36
|
+
* add\_observer
|
37
|
+
Adds an observer for the including class/module.
|
38
|
+
|
39
|
+
* notify\_observers
|
40
|
+
Notify observers registered for the including class/module.
|
41
|
+
|
42
|
+
* destroy\_observers
|
43
|
+
Destroy observers registered for the incluing class/module.
|
44
|
+
|
45
|
+
* observers
|
46
|
+
You shouldn't need to use this method.
|
47
|
+
It is used internally by the above methods.
|
48
|
+
|
49
|
+
|
50
|
+
It adds the following instance variable:
|
51
|
+
|
52
|
+
* @observers
|
53
|
+
Nothing special, a list of observers used by the 'observers' method.
|
54
|
+
|
29
55
|
__EXAMPLE__
|
30
56
|
|
31
57
|
class Car
|
data/lib/observe.rb
CHANGED
@@ -22,9 +22,9 @@ module Observe
|
|
22
22
|
#
|
23
23
|
def add_observer group, observer=nil, &block
|
24
24
|
if block_given?
|
25
|
-
observers << Observe.observer.new(group.to_sym, block)
|
25
|
+
observers[group.to_sym] << Observe.observer.new(group.to_sym, block)
|
26
26
|
elsif observer
|
27
|
-
observers << Observe.observer.new(group.to_sym, observer)
|
27
|
+
observers[group.to_sym] << Observe.observer.new(group.to_sym, observer)
|
28
28
|
else
|
29
29
|
raise ArgumentError, "A block or object is expected, but none given."
|
30
30
|
end
|
@@ -43,10 +43,8 @@ module Observe
|
|
43
43
|
# @return [void]
|
44
44
|
#
|
45
45
|
def notify_observers group, *args
|
46
|
-
observers.each do |observer|
|
47
|
-
|
48
|
-
observer.object.call(*args)
|
49
|
-
end
|
46
|
+
observers[group.to_sym].each do |observer|
|
47
|
+
observer.object.call(*args)
|
50
48
|
end
|
51
49
|
end
|
52
50
|
private :notify_observers
|
@@ -67,15 +65,19 @@ module Observe
|
|
67
65
|
if group.nil?
|
68
66
|
observers.clear
|
69
67
|
else
|
70
|
-
observers.
|
71
|
-
observer.group == group.to_sym
|
72
|
-
end
|
68
|
+
observers.delete(group.to_sym)
|
73
69
|
end
|
74
70
|
end
|
75
71
|
private :destroy_observers
|
76
72
|
|
73
|
+
#
|
74
|
+
# A list of observers registered for a including class or module.
|
75
|
+
# There's no need to use this method directly.
|
76
|
+
#
|
77
|
+
# @return [Hash<Symbol, Array>]
|
78
|
+
#
|
77
79
|
def observers
|
78
|
-
@observers = @observers || []
|
80
|
+
@observers = @observers || Hash.new { |h,k| h[k] = [] }
|
79
81
|
end
|
80
82
|
private :observers
|
81
83
|
|
data/observe.gemspec
CHANGED
data/test/observe_test.rb
CHANGED
@@ -24,7 +24,7 @@ describe Observe do
|
|
24
24
|
@subject.add_observer(:group) { }
|
25
25
|
@subject.add_observer(:fail) { }
|
26
26
|
|
27
|
-
@subject.observers
|
27
|
+
@subject.observers[:group].size.must_equal(2)
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'must raise an ArgumentError if no block or object is given.' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: observe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-02 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
16
|
-
requirement: &
|
16
|
+
requirement: &70196288545480 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.5'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70196288545480
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70196288544800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 0.9.2
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70196288544800
|
36
36
|
description: A simple interface for adding observers to any class.
|
37
37
|
email:
|
38
38
|
- rob@flowof.info
|
@@ -41,6 +41,7 @@ extensions: []
|
|
41
41
|
extra_rdoc_files: []
|
42
42
|
files:
|
43
43
|
- .gitignore
|
44
|
+
- .rbenv-version
|
44
45
|
- .travis.yml
|
45
46
|
- .yardopts
|
46
47
|
- Gemfile
|
@@ -65,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
66
|
version: '0'
|
66
67
|
segments:
|
67
68
|
- 0
|
68
|
-
hash:
|
69
|
+
hash: 2329257265388588306
|
69
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
71
|
none: false
|
71
72
|
requirements:
|
@@ -74,10 +75,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
75
|
version: '0'
|
75
76
|
segments:
|
76
77
|
- 0
|
77
|
-
hash:
|
78
|
+
hash: 2329257265388588306
|
78
79
|
requirements: []
|
79
80
|
rubyforge_project: observe
|
80
|
-
rubygems_version: 1.8.
|
81
|
+
rubygems_version: 1.8.11
|
81
82
|
signing_key:
|
82
83
|
specification_version: 3
|
83
84
|
summary: A simple interface for adding observers to any class.
|