kvo 0.0.1 → 0.0.2
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/README.md +24 -0
- data/lib/kvo.rb +1 -1
- data/lib/kvo/version.rb +1 -1
- data/spec/kvo_spec.rb +37 -1
- metadata +49 -70
data/README.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Description
|
2
|
+
===========
|
3
|
+
|
4
|
+
Key-Value Observing in ruby
|
5
|
+
|
6
|
+
### Synopsis
|
7
|
+
|
8
|
+
Fires a [Publisher](http://atomicobject.github.com/publisher/) event whenever the variable is set.
|
9
|
+
|
10
|
+
### How do I use it?
|
11
|
+
|
12
|
+
class Foo
|
13
|
+
include Kvo
|
14
|
+
kvo_attr_accessor :bar, :baz
|
15
|
+
end
|
16
|
+
|
17
|
+
f = Foo.new
|
18
|
+
f.when :bar_changed do |oldVal, newVal|
|
19
|
+
puts "bar was changed from #{oldVal} to #{newVal}"
|
20
|
+
end
|
21
|
+
|
22
|
+
Authors
|
23
|
+
=======
|
24
|
+
* Shawn Anderson (shawn.anderson@atomicobject.com)
|
data/lib/kvo.rb
CHANGED
data/lib/kvo/version.rb
CHANGED
data/spec/kvo_spec.rb
CHANGED
@@ -31,10 +31,46 @@ describe 'kvo' do
|
|
31
31
|
@target.bar = :yar
|
32
32
|
@target.instance_variable_get("@bar").should be_nil
|
33
33
|
end
|
34
|
-
end
|
35
34
|
|
35
|
+
describe "inheritance" do
|
36
|
+
before do
|
37
|
+
@target = SubFoo.new
|
38
|
+
|
39
|
+
@fired = nil
|
40
|
+
@target.when :bar_changed do |old, new|
|
41
|
+
@fired = {:old => old, :new => new}
|
42
|
+
end
|
43
|
+
@target.when :qux_changed do |old, new|
|
44
|
+
@qux_fired = {:old => old, :new => new}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'inherits kvo from parent' do
|
49
|
+
@target.bar = :old
|
50
|
+
old_val = @target.bar
|
51
|
+
@target.bar = :yar
|
52
|
+
@fired.should_not be_nil
|
53
|
+
@fired[:old].should == old_val
|
54
|
+
@fired[:new].should == :yar
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'can add more kvo fields to its parents fields' do
|
58
|
+
@target.qux = :old
|
59
|
+
|
60
|
+
old_val = @target.qux
|
61
|
+
@target.qux = :yar
|
62
|
+
@qux_fired.should_not be_nil
|
63
|
+
@qux_fired[:old].should == old_val
|
64
|
+
@qux_fired[:new].should == :yar
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
36
68
|
|
37
69
|
class Foo
|
38
70
|
include Kvo
|
39
71
|
kvo_attr_accessor :bar, :baz
|
40
72
|
end
|
73
|
+
|
74
|
+
class SubFoo < Foo
|
75
|
+
kvo_attr_accessor :qux
|
76
|
+
end
|
metadata
CHANGED
@@ -1,111 +1,90 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: kvo
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
version: 0.0.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Shawn Anderson
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-28 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: publisher
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2157009500 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :runtime
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: rspec
|
35
23
|
prerelease: false
|
36
|
-
|
24
|
+
version_requirements: *2157009500
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2157008500 !ruby/object:Gem::Requirement
|
37
28
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
44
33
|
type: :development
|
45
|
-
version_requirements: *id002
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: mocha
|
48
34
|
prerelease: false
|
49
|
-
|
35
|
+
version_requirements: *2157008500
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mocha
|
38
|
+
requirement: &2157007540 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
- 0
|
56
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
57
44
|
type: :development
|
58
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2157007540
|
59
47
|
description: KVO in ruby.
|
60
|
-
email:
|
48
|
+
email:
|
61
49
|
- shawn42@gmail.com
|
62
50
|
executables: []
|
63
|
-
|
64
51
|
extensions: []
|
65
|
-
|
66
52
|
extra_rdoc_files: []
|
67
|
-
|
68
|
-
files:
|
53
|
+
files:
|
69
54
|
- .gitignore
|
70
55
|
- Gemfile
|
56
|
+
- README.md
|
71
57
|
- Rakefile
|
72
58
|
- kvo.gemspec
|
73
59
|
- lib/kvo.rb
|
74
60
|
- lib/kvo/version.rb
|
75
61
|
- spec/helper.rb
|
76
62
|
- spec/kvo_spec.rb
|
77
|
-
|
78
|
-
homepage: ""
|
63
|
+
homepage: ''
|
79
64
|
licenses: []
|
80
|
-
|
81
65
|
post_install_message:
|
82
66
|
rdoc_options: []
|
83
|
-
|
84
|
-
require_paths:
|
67
|
+
require_paths:
|
85
68
|
- lib
|
86
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
70
|
none: false
|
88
|
-
requirements:
|
89
|
-
- -
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
|
93
|
-
version: "0"
|
94
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
76
|
none: false
|
96
|
-
requirements:
|
97
|
-
- -
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
- 0
|
101
|
-
version: "0"
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
102
81
|
requirements: []
|
103
|
-
|
104
82
|
rubyforge_project: kvo
|
105
|
-
rubygems_version: 1.
|
83
|
+
rubygems_version: 1.8.10
|
106
84
|
signing_key:
|
107
85
|
specification_version: 3
|
108
86
|
summary: KVO in ruby
|
109
|
-
test_files:
|
87
|
+
test_files:
|
110
88
|
- spec/helper.rb
|
111
89
|
- spec/kvo_spec.rb
|
90
|
+
has_rdoc:
|