affect 0.2 → 0.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
  SHA256:
3
- metadata.gz: a0f0602d116f929cf06c3e842419c2bf6b74ccfe87e7af297ccb5cd9a56ea33e
4
- data.tar.gz: 2b04f09256756633e268cf29d263b870b5065cf5e2bf6a3f55cdac1465a14a0b
3
+ metadata.gz: 62d3c9fdd9817a29ebb5f1a539f45adfec21ff8760f578a3f4e295399d8093b1
4
+ data.tar.gz: 9b18effa66e4c6687ec0d76d8ef8b9e50d7246804dfabbcc6cabc84bd51a8fe9
5
5
  SHA512:
6
- metadata.gz: aecfbd76f53bf973d597b8ce6233a5a704ef22a2e02b20f88e9b941653d8be4866d5237d9e16c562409e74f7cc86643dfd91384a8707ca82b16e7dd8dd0a5807
7
- data.tar.gz: 84683a1c5b7f63ee0ab5bfcdb8cd757faef817fd4c0b5da21b93ff10741ca549773068d4ffc7ac34ae95c43a8a9df23f9af0a6908e88c87548399a3699d098ae
6
+ metadata.gz: e214d4d3c930c4f196a973ffbc8a494fff25cf098a93bda732d1fc8bb0181633b09b0611e36eff188779496f25e4508def1ad940d7966baddbf140fa56d5151f
7
+ data.tar.gz: 1cd347fccb3ccf7da6518a1e6d84972a50d12492422d1a69920187198d30b71acf1f6b25438ece7fa0857f24904bcb5f49db9850ea5d6a141ede7ca6c56d558f
@@ -1,3 +1,8 @@
1
+ 0.3 2019-08-29
2
+ --------------
3
+
4
+ * Add support for passing blocks to effect handlers
5
+
1
6
  0.2 2019-08-26
2
7
  --------------
3
8
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- affect (0.2)
4
+ affect (0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -16,12 +16,12 @@ module Affect
16
16
  proc { |effect, *args| handle(effect, *args) }
17
17
  end
18
18
 
19
- def perform(effect, *args)
19
+ def perform(effect, *args, &block)
20
20
  handler = find_handler(effect)
21
21
  if handler
22
- call_handler(handler, effect, *args)
22
+ call_handler(handler, effect, *args, &block)
23
23
  elsif @parent
24
- @parent.perform(effect, *args)
24
+ @parent.perform(effect, *args, &block)
25
25
  else
26
26
  raise "No handler found for #{effect.inspect}"
27
27
  end
@@ -31,13 +31,13 @@ module Affect
31
31
  @handlers[effect] || @handlers[effect.class] || @handlers[nil]
32
32
  end
33
33
 
34
- def call_handler(handler, effect, *args)
34
+ def call_handler(handler, effect, *args, &block)
35
35
  if handler.arity.zero?
36
- handler.call
36
+ handler.call(&block)
37
37
  elsif args.empty?
38
- handler.call(effect)
38
+ handler.call(effect, &block)
39
39
  else
40
- handler.call(*args)
40
+ handler.call(*args, &block)
41
41
  end
42
42
  end
43
43
 
@@ -72,12 +72,12 @@ module Affect
72
72
  end
73
73
  end
74
74
 
75
- def perform(effect, *args)
75
+ def perform(effect, *args, &block)
76
76
  unless (ctx = Context.current)
77
77
  raise 'perform called outside capture block'
78
78
  end
79
79
 
80
- ctx.perform(effect, *args)
80
+ ctx.perform(effect, *args, &block)
81
81
  end
82
82
 
83
83
  def escape(value = nil, &block)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Affect
4
- VERSION = '0.2'
4
+ VERSION = '0.3'
5
5
  end
@@ -57,6 +57,12 @@ class AffectTest < Minitest::Test
57
57
  assert_equal 3, ctx.capture { perform(2) }
58
58
  end
59
59
 
60
+ def test_context_handler_with_block
61
+ assert_equal :bar, Affect(foo: -> &block { block.() }).capture {
62
+ perform(:foo) { :bar }
63
+ }
64
+ end
65
+
60
66
  def test_that_contexts_can_be_nested
61
67
  results = []
62
68
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: affect
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2019-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest