affect 0.2 → 0.3

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