volt-watch 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1aed001ff8fc736e54968e215a9bc2718a92cc50
4
- data.tar.gz: e54c41cc2018522b7ee0104d38faec391de89019
3
+ metadata.gz: 3a601784ccab5ec7a97019dfa491e666d496ba88
4
+ data.tar.gz: 670d9cc1feeee240b0a0225a954806cbe7d19f7d
5
5
  SHA512:
6
- metadata.gz: aef4afc1b7639112f73a587a0d87bf145cb8abeb04436c88021e42dd26f8479dca31a2febfb88667fea0ed8d2bf5111d2b791944652cde7dda6f909c493347fc
7
- data.tar.gz: 3c8ea040ec249cfee51eb12ea7db17a8d861fe240b7888ee2558fe3c9e7ad2e5a661b423244e456cf60df8ae0f0ad7855165e1c4e8e8b7302707b1af3ef74141
6
+ metadata.gz: bec5cdf14cf2f3c60b2bd130be534cd6d6fcee0605a173790d401feb51e79a97fc6ca02798c9b3374a349f27e9d9066b5046de61df5c8b9fe5548f6384c20b3f
7
+ data.tar.gz: 7a78bf09343d9f393a3ed106ffbbd807995a82ba2a8926c4ef473e34b49e2d1cdaf65dad8d03310b3d8053477f8934e78884b9b3552d885e56b7cc11cee75c64
data/lib/volt/watch.rb CHANGED
@@ -225,25 +225,52 @@ module Volt
225
225
 
226
226
  def ensure_reactive(model)
227
227
  unless reactive?(model)
228
- raise ArgumentError, 'argument must be Volt Model, ArrayModel, ReactiveArray or ReactiveHash'
228
+ raise ArgumentError, 'argument must be Volt Model, ArrayModel, ReactiveArray or ReactiveHash...'
229
229
  end
230
230
  end
231
231
 
232
232
  def reactive?(model)
233
+ reactive_model?(model) ||
234
+ reactive_array?(model) ||
235
+ reactive_hash?(model)
236
+ end
237
+
238
+ # Must behave like a Volt::Model
239
+ # and respond to #get(attribute)
240
+ def reactive_model?(model)
233
241
  Volt::Model === model ||
242
+ # dirty way of letting anything be reactive if it wants
243
+ (model.respond_to?(:reactive_model?) && model.reactive_model?) ||
244
+ (model.class.respond_to?(:reactive_model?) && model.class.reactive_model?)
245
+ end
246
+
247
+ # Must behave like a Volt::ArrayModel or Volt::ReactiveArray
248
+ def reactive_array?(model)
234
249
  Volt::ArrayModel === model ||
235
- Volt::ReactiveArray == model ||
236
- Volt::ReactiveHash === model
250
+ Volt::ReactiveArray === model ||
251
+ # dirty way of letting anything be reactive if it wants
252
+ (model.respond_to?(:reactive_array?) && model.reactive_array?) ||
253
+ (model.class.respond_to?(:reactive_array?) && model.class.reactive_array?)
254
+ end
255
+
256
+ # Must behave like a Volt::ReactiveHash
257
+ def reactive_hash?(model)
258
+ Volt::ReactiveHash === model ||
259
+ # dirty way of letting anything be reactive if it wants
260
+ (model.respond_to?(:reactive_hash?) && model.reactive_hash?) ||
261
+ (model.class.respond_to?(:reactive_hash?) && model.class.reactive_hash?)
237
262
  end
238
263
 
239
264
  def traverse(node, mode, except, pass_model, block)
240
265
  # debug __method__, __LINE__, "node=#{node} mode=#{mode} except=#{except}"
241
- if node.is_a?(Volt::Model)
266
+ if reactive_model?(node)
242
267
  traverse_model(node, mode, except, pass_model, block)
243
- elsif node.is_a?(Volt::ReactiveArray)
268
+ elsif reactive_array?(node)
244
269
  traverse_array(node, mode, except, pass_model, block)
245
- elsif node.is_a?(Volt::ReactiveHash)
270
+ elsif reactive_hash?(node)
246
271
  traverse_hash(node, mode, except, pass_model, block)
272
+ else
273
+ # go no further
247
274
  end
248
275
  end
249
276
 
@@ -1,5 +1,5 @@
1
1
  module Volt
2
2
  module Watch
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volt-watch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin Gunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-29 00:00:00.000000000 Z
11
+ date: 2016-03-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: