observable_object 0.1.1 → 0.1.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.
- checksums.yaml +4 -4
- data/lib/observable_object.rb +5 -0
- data/lib/observable_object/version.rb +1 -1
- data/spec/observable_object_spec.rb +36 -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: 3bfbc272f929c3fd1df97e7d0743c1dbe13a5aa0
|
4
|
+
data.tar.gz: e0b5374415268dcd81c2ee0996d801fb56012870
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c1185f702058cf2384149855567c146ee2ce51a11191a435eb6a4146ae35f18858f53d60b6a1fc2074ad3ce5c34c35d2d182a93b1a4509f7ac148e36a325701
|
7
|
+
data.tar.gz: b456bb17b23489efc2290c0df8adec4e309f163c9c68fe055888f2daa347723d55f7f8aa5709f8c98fab1ad0467008c8d228577cdcb12e2e6b1cb817cde6fcd9
|
data/lib/observable_object.rb
CHANGED
@@ -102,6 +102,11 @@ module ObservableObject
|
|
102
102
|
def !
|
103
103
|
!@obj
|
104
104
|
end
|
105
|
+
|
106
|
+
# special handling to let Array(), Hash() etc. work
|
107
|
+
%i[to_ary to_hash to_str].each do |name|
|
108
|
+
define_method(name) { @obj.__send__(name) }
|
109
|
+
end
|
105
110
|
|
106
111
|
def respond_to?(mname)
|
107
112
|
@obj.respond_to?(mname)
|
@@ -107,6 +107,42 @@ describe ObservableObject do
|
|
107
107
|
expect(event_obj_list.all? { |x| x == wrapped }).to be true
|
108
108
|
end
|
109
109
|
|
110
|
+
it 'works with Array()' do
|
111
|
+
obj = [1,2,3]
|
112
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
113
|
+
expect( Array(wrapped) ).to eq obj
|
114
|
+
end
|
115
|
+
it 'works with Hash()' do
|
116
|
+
obj = {'a'=>1}
|
117
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
118
|
+
expect( Hash(wrapped) ).to eq obj
|
119
|
+
end
|
120
|
+
it 'works with String()' do
|
121
|
+
obj = 'string'
|
122
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
123
|
+
expect( String(wrapped) ).to eq obj
|
124
|
+
end
|
125
|
+
it 'works with Complex()' do
|
126
|
+
obj = 1+2i
|
127
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
128
|
+
expect( Complex(wrapped) ).to eq obj
|
129
|
+
end
|
130
|
+
it 'works with Float()' do
|
131
|
+
obj = 22.73
|
132
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
133
|
+
expect( Float(wrapped) ).to eq obj
|
134
|
+
end
|
135
|
+
it 'works with Integer()' do
|
136
|
+
obj = 18
|
137
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
138
|
+
expect( Integer(wrapped) ).to eq obj
|
139
|
+
end
|
140
|
+
it 'works with Rational()' do
|
141
|
+
obj = 2/3.to_r
|
142
|
+
wrapped = ObservableObject.deep_wrap(obj,&event)
|
143
|
+
expect( Rational(wrapped) ).to eq obj
|
144
|
+
end
|
145
|
+
|
110
146
|
# TODO: fix the case below, if there is an efficient solution. Not a bug, annoyance.
|
111
147
|
# it 'does not call event handler after an already deleted sub-object is modified' do
|
112
148
|
# obj = [[1,2],[3,4]]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: observable_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- moonfly (Andrey Pronin)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|