motion-wiretap 1.1.2 → 1.1.3

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: 603a0ed4a62d6d94d14f2d6f14d08393d6c37b40
4
- data.tar.gz: dc884f2877a4e6d03b0075b859aa736d20d23bf8
3
+ metadata.gz: 99db3db8e4cf9422189294a89b8291de93af7548
4
+ data.tar.gz: f8565d3e0cde697b9ca8c02bdf1f932f0ce635bc
5
5
  SHA512:
6
- metadata.gz: 09e75aa157623d36f01c589a43d839a29f263e9a4cb0967822234ea26827998ed7dded620b47541045e464329058323baefff08cb08109081402fe8040f026d6
7
- data.tar.gz: f7649b063c71f4fec9a8c30d630cfdf5f15dc703a1fbe56a16eb193549a4cb9cdc44d2a77f05e8db66bf6b296acac0d107d5d39acf6c2e33030c3b8feb5f9f25
6
+ metadata.gz: 1e217902b0a8c869efcf462ad728046dffcd492a613781e8284d2db7449caa4e2780bdeebc0390eda3a453fdc7a6c4282c89314d767f61e0e757ddde2955ec6a
7
+ data.tar.gz: 64755e1482c0fb48241805ff5d30a41832833a3fb77d9878ef25e01fbf2612575844eff88aa8a71621f8321ec61fd1856f392ce6c435c8599bfecf6e76b95f8a
@@ -4,10 +4,9 @@ module MotionWiretap
4
4
  # Signal is triggered with a new value, or it is completed, or canceled with
5
5
  # an error event.
6
6
  class Signal < Wiretap
7
- # This is the default initial value - it does not trigger a 'change' event.
8
- # This value is for internal use only.
9
- SINGLETON = Class.new.new
10
7
 
8
+ # The SINGLETON value does not trigger a 'change' event. It is for internal
9
+ # use only.
11
10
  def initialize(value=SINGLETON, &block)
12
11
  @value = value
13
12
  super(&block)
@@ -21,17 +20,37 @@ module MotionWiretap
21
20
  end
22
21
  end
23
22
 
24
- def next(value)
25
- raise "don't do that please" if value == SINGLETON
26
- @value = value
27
- trigger_changed(@value)
23
+ # If you pass multiple values to this method, the 'value' will be the array
24
+ # of all the values, but they will be passed on to 'trigger_changed' using
25
+ # the splat operator, and so will be passed to listener blocks as individual
26
+ # arguments.
27
+ #
28
+ # Example:
29
+ # signal = Signal.new
30
+ # signal.listen do |a, b|
31
+ # @added = a + b
32
+ # end
33
+ # signal.next(1, 5) # works great, @added will be 6
34
+ # signal.next([1, 5]) # this works, too, because of how args are assigned to blocks in ruby
35
+ # signal.next(1) # a will be 1 and b will be nil (error!)
36
+ def next(value, *values)
37
+ if values.length > 0
38
+ raise "don't do that please" if values.include? SINGLETON
39
+ value = [value].concat values
40
+ @value = value
41
+ trigger_changed(*value)
42
+ else
43
+ raise "don't do that please" if value == SINGLETON
44
+ @value = value
45
+ trigger_changed(@value)
46
+ end
28
47
  end
29
48
 
30
49
  def complete
31
50
  trigger_completed
32
51
  end
33
52
 
34
- def error(error)
53
+ def error(error=SINGLETON)
35
54
  trigger_error(error)
36
55
  end
37
56
 
@@ -4,6 +4,10 @@ end
4
4
 
5
5
  module MotionWiretap
6
6
 
7
+ # This placeholder value is used anywhere you want to accept any value,
8
+ # including nil.
9
+ SINGLETON = Class.new.new
10
+
7
11
  class Wiretap
8
12
 
9
13
  def initialize(&block)
@@ -74,6 +78,7 @@ module MotionWiretap
74
78
  return self
75
79
  end
76
80
 
81
+ # Sends the block or wiretap a changed signal
77
82
  def trigger_changed_on(block_or_wiretap, values)
78
83
  if block_or_wiretap.is_a? Wiretap
79
84
  block_or_wiretap.trigger_changed(*values)
@@ -107,6 +112,7 @@ module MotionWiretap
107
112
  return self
108
113
  end
109
114
 
115
+ # Sends the block or wiretap a completed signal
110
116
  def trigger_completed_on(block_or_wiretap)
111
117
  if block_or_wiretap.is_a? Wiretap
112
118
  block_or_wiretap.trigger_completed
@@ -128,9 +134,12 @@ module MotionWiretap
128
134
  return self
129
135
  end
130
136
 
131
- def trigger_error(error)
137
+ def trigger_error(error=SINGLETON)
132
138
  return if @is_torn_down || @is_completed || @is_error
133
- error ||= true
139
+ raise "You must pass a truthy value to `trigger_error()`" unless error
140
+
141
+ # convert SINGLETON to a default error value
142
+ error = true if error == SINGLETON
134
143
  @is_error = error
135
144
 
136
145
  @error_handlers.each do |block_or_wiretap|
@@ -141,6 +150,7 @@ module MotionWiretap
141
150
  return self
142
151
  end
143
152
 
153
+ # Sends the block or wiretap an error value
144
154
  def trigger_error_on(block_or_wiretap, error)
145
155
  if block_or_wiretap.is_a? Wiretap
146
156
  block_or_wiretap.trigger_error(error)
@@ -1,3 +1,3 @@
1
1
  module MotionWiretap
2
- VERSION = '1.1.2'
2
+ VERSION = '1.1.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-wiretap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin T.A. Gray
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-12 00:00:00.000000000 Z
11
+ date: 2014-03-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  ReactiveCocoa is an amazing system, and RubyMotion could benefit from the