conditional_callbacks 1.0.3 → 1.0.4

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTlmMzhkOTFjMjhjMTI4MzMzYzllODhhNjAwYWY0ZTVhZjQzYmY0OQ==
4
+ YWQxYmE2ZGRmZjU2YjEyZGFlZmU5ZDJkNDgzY2ZjOTNkMGRmNWE2Zg==
5
5
  data.tar.gz: !binary |-
6
- YmM3ZjRjMjM4N2M3ZDU4Nzc0ZjIxYTczODM3YzY0NWFlMWVhZDdlZg==
6
+ NDFiNjMxNDE2ZGVlNGExZGU2MGY4OTZmMDhlOGZhNDQwNWU5OGE3OA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTVjNDMwMGY3YzYzNzNhZDkwNTBmMTQyZjExYTBhMWI0ZDE5OTYwN2E4NDUx
10
- ZDViYzY3OTk4M2JjNmRhNjk4YTg3NjY0MmU3YjJmYWNjNzQ0NDUyZjM4Mzg1
11
- NTgxMjVmZTcxNzA2YmQ3ZjVhNzJlYTE4ZGE1NDkwZmNjYzAyMmE=
9
+ YTI1OTE4Mzk0OTEyOTE3ZTE4MDkwNGJhNTlhNWQ3ZmFjNzYxMzNkMDBmZGFh
10
+ YTJlZmM0YjZkNmU1OGU5MTZlZmJlMTc4MmI1ZTA1M2E3MjY1NmI0NmIzYWY4
11
+ NjAyNjNmNzdiODg1M2E1NTVkMjBmODVjYTBlMGNlNzY3ZTEyMmM=
12
12
  data.tar.gz: !binary |-
13
- ZmQ5ZTc0OGQ1MmIyODdmNzExZWFiM2I5NTE4MGY3MGUyMmNmZmFiZWEzODg4
14
- MzdkOTdmMGQyYjRmYTQyZTJmMDMxYmNkMTQxZGE1M2M1NWY1NjYwMGQ1ZmQ4
15
- MDM0ZGNlNDRhOGMzMzU4NGVlNTllZjk2MTU0MjIyNzdmYmRiNWU=
13
+ OTViNjYwMGY1OGQzYmMwNDkyZWI2OWU4YzNmZDhkYjUzMGNlMmRhYzI5ZGVm
14
+ NTMyMWVlMzFiMjllNjY1MTJhZjVjOTFiY2NhYTk2Nzg3M2NlNjA5NjVlMDIy
15
+ NTQ4NDlmMGNlZjAwYTQxZGJjZWIxN2NlZWMyZGNhNTFmNzBhODc=
@@ -0,0 +1,23 @@
1
+ module IntrepidProducts
2
+ class ConditionalCallbacks
3
+ def initialize(block)
4
+ @callbacks = {}
5
+ block.call(self)
6
+ end
7
+
8
+ def call_proc_for(callback_key, *args)
9
+ @callbacks[callback_key].call(*args)
10
+ end
11
+
12
+ def has_proc?(key)
13
+ @callbacks.has_key?(key)
14
+ end
15
+
16
+ private
17
+
18
+ def method_missing(m, *args, &block)
19
+ block ? @callbacks[m] = block : super
20
+ self
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe IntrepidProducts::ConditionalCallbacks do
4
+ describe '#call_proc_for' do
5
+ result = nil
6
+
7
+ let(:callbacks_instance) do
8
+ instantiate_callbacks do |on|
9
+ on.success do
10
+ result = :success
11
+ end
12
+
13
+ on.failure do
14
+ result = :failure
15
+ end
16
+ end
17
+ end
18
+
19
+ it 'invokes the named proc' do
20
+ callbacks_instance.call_proc_for(:success)
21
+ expect(result).to eq(:success)
22
+
23
+ callbacks_instance.call_proc_for(:failure)
24
+ expect(result).to eq(:failure)
25
+ end
26
+ end
27
+
28
+ describe '#has_proc?' do
29
+ let(:callbacks_instance) do
30
+ instantiate_callbacks do |on|
31
+ on.eeny do
32
+ end
33
+
34
+ on.meeny do
35
+ end
36
+
37
+ on.miny do
38
+ end
39
+
40
+ on.moe do
41
+ end
42
+ end
43
+ end
44
+
45
+ it 'indicates if a named proc is available' do
46
+ expect(callbacks_instance.has_proc?(:eeny)).to be true
47
+ expect(callbacks_instance.has_proc?(:meeny)).to be true
48
+ expect(callbacks_instance.has_proc?(:miny)).to be true
49
+ expect(callbacks_instance.has_proc?(:moe)).to be true
50
+ expect(callbacks_instance.has_proc?(:foo)).to be false
51
+ end
52
+ end
53
+
54
+ def instantiate_callbacks(&block)
55
+ IntrepidProducts::ConditionalCallbacks.new(block)
56
+ end
57
+ end
@@ -0,0 +1,10 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'conditional_callbacks'
5
+
6
+ RSpec.configure do |config|
7
+ config.color = true
8
+ config.warnings = true
9
+ config.formatter = 'documentation'
10
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conditional_callbacks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Intrepid Products
@@ -43,7 +43,10 @@ email: IntrepidProducts@gmail.com
43
43
  executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files: []
46
- files: []
46
+ files:
47
+ - lib/conditional_callbacks.rb
48
+ - spec/conditional_callbacks_spec.rb
49
+ - spec/spec_helper.rb
47
50
  homepage:
48
51
  licenses:
49
52
  - MIT
@@ -68,5 +71,7 @@ rubygems_version: 2.4.2
68
71
  signing_key:
69
72
  specification_version: 4
70
73
  summary: ConditionalCallbacks
71
- test_files: []
74
+ test_files:
75
+ - spec/conditional_callbacks_spec.rb
76
+ - spec/spec_helper.rb
72
77
  has_rdoc: