volt-watch 0.1.5 → 0.1.6

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