eventador 1.0.0 → 1.0.2

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
- SHA1:
3
- metadata.gz: 68588a681356589d5e647e535ced1dae50b9e577
4
- data.tar.gz: 15f21a68add35277f591658193075a6be86c71e8
2
+ SHA256:
3
+ metadata.gz: 5c9b1c8fefcd9a9efb8642a42ee27f19d4ddc4b52b0bd888ded221670232d765
4
+ data.tar.gz: 12d517deef57b64e64d28a2e09f52b0afb4be80d753908d2e74db5f25ae58e73
5
5
  SHA512:
6
- metadata.gz: 962e7f55ec30bf361df0a9883da183a1ab78088b7ad2bddf2053c7a567c4ada1060fe9d6e4237e8ccb0b9fc417b550fe2ababe58a9d4831035fd3364560518a9
7
- data.tar.gz: be624d69695f2b5dac592c6cde25cdf72a83e1e2977e05ecd2b2ede1487cb7bb8c363b24d8f70f4281e15f2fd70fc4dcffaf4d7f0a030ffe831a56b63d75c9d0
6
+ metadata.gz: dd95e9e8587c762f99d0cae4b5f51e4625c8bf59924b20c39d5cd868e0be642841b5f8f63e39365c1ab52ed70c6635927eb0eb6e5014c0da52af9d02d3a22568
7
+ data.tar.gz: 7f586b93896436d7ea9a68f59d71adcaf77c7552405edee0d346069e12087cbfd9e86ed7d932da3978e7385b8868b73f8b580884a68d0a273f45eeeb5973b2cd
data/README.md CHANGED
@@ -36,9 +36,16 @@ Or install it yourself as:
36
36
  end
37
37
  end
38
38
 
39
+ ## Developing
40
+
41
+ Running tests
42
+ ```
43
+ $ rake test
44
+ ```
45
+
39
46
  ## Contributing
40
47
 
41
- 1. Fork it ( https://github.com/[my-github-username]/eventador/fork )
48
+ 1. Fork it ( https://github.com/yardstick/eventador/fork )
42
49
  2. Create your feature branch (`git checkout -b my-new-feature`)
43
50
  3. Commit your changes (`git commit -am 'Add some feature'`)
44
51
  4. Push to the branch (`git push origin my-new-feature`)
data/eventador.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.6'
21
+ spec.add_development_dependency 'bundler', ">= 2.2.10"
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'minitest', '~> 5.0'
24
24
  end
@@ -1,3 +1,3 @@
1
1
  module Eventador
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.2'
3
3
  end
data/lib/eventador.rb CHANGED
@@ -5,21 +5,50 @@ module Eventador
5
5
  def method_missing(method, *args, &block)
6
6
  false
7
7
  end
8
+
9
+ def result
10
+ @result
11
+ end
12
+ end
13
+
14
+ Capture = Class.new do
15
+ def method_missing(method, *args, &block)
16
+ false
17
+ end
18
+
19
+ def block
20
+ @block
21
+ end
8
22
  end
9
23
 
10
24
  def callback(callable, *rest)
11
- ret = nil
12
25
  @callbacks ||= ::Hash.new do |h, method_name|
13
26
  h[method_name] = Class.new(Callback) do
14
27
  define_method(method_name) do |&block|
15
- ret = block.nil? ? true : block.call(*args)
28
+ @result = block.nil? ? true : block.call(*args)
16
29
  end
17
30
  define_method("#{method_name}?") { true }
18
31
  define_method(:to_s) { "Callback(#{method_name})" }
19
32
  end
20
33
  end
21
- call(@callbacks[callable].new(rest))
22
- ret
34
+ ret = @callbacks[callable].new(rest)
35
+ call(ret)
36
+ ret.result
37
+ end
38
+
39
+ def capture(callable)
40
+ @captures ||= ::Hash.new do |h, method_name|
41
+ h[method_name] = Class.new(Capture) do
42
+ define_method(method_name) do |&block|
43
+ @block = block
44
+ end
45
+ define_method("#{method_name}?") { true }
46
+ define_method(:to_s) { "Capture(#{method_name})" }
47
+ end
48
+ end
49
+ ret = @captures[callable].new
50
+ call(ret)
51
+ ret.block
23
52
  end
24
53
  end
25
54
 
data/spec/proc_spec.rb CHANGED
@@ -29,7 +29,7 @@ describe Proc do
29
29
  cba(a) do |on|
30
30
  on.test do |arg|
31
31
  @flag.notify
32
- arg.must_equal(a)
32
+ _(arg).must_equal(a)
33
33
  end
34
34
  end
35
35
  end
@@ -56,6 +56,44 @@ describe Proc do
56
56
  a + 1
57
57
  end
58
58
  end
59
- ret.must_equal(2)
59
+ _(ret).must_equal(2)
60
+ end
61
+
62
+ def cbm(a, &block)
63
+ block.callback(:add, a)
64
+
65
+ block.callback(:block1, a) +
66
+ block.callback(:block2, a) +
67
+ block.callback(:block3, a)
68
+ end
69
+
70
+ it 'should allow many callbacks in sequence' do
71
+ ret = cbm(1) do |on|
72
+ on.add { @flag.notify }
73
+ on.block1 { |a| a * 1 }
74
+ on.block2 { |a| a * 2 }
75
+ on.block3 { |a| a * 3 }
76
+ end
77
+ _(ret).must_equal(6)
78
+ end
79
+ end
80
+
81
+ describe Proc do
82
+ AB = Struct.new(:a, :b)
83
+
84
+ def bcb(&block)
85
+ add = block.capture(:add)
86
+ a = 1
87
+ b = 2
88
+ s = AB.new(a, b)
89
+ s.define_singleton_method(:add, &add)
90
+ s.add
91
+ end
92
+
93
+ it 'should allow getting the block' do
94
+ ret = bcb do |on|
95
+ on.add { a + b }
96
+ end
97
+ _(ret).must_equal(3)
60
98
  end
61
99
  end
metadata CHANGED
@@ -1,29 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventador
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Huckstep
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2014-04-23 00:00:00.000000000 Z
10
+ date: 2025-03-14 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.6'
18
+ version: 2.2.10
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.6'
25
+ version: 2.2.10
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rake
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +73,6 @@ homepage: ''
74
73
  licenses:
75
74
  - MIT
76
75
  metadata: {}
77
- post_install_message:
78
76
  rdoc_options: []
79
77
  require_paths:
80
78
  - lib
@@ -89,9 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
87
  - !ruby/object:Gem::Version
90
88
  version: '0'
91
89
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.2.2
94
- signing_key:
90
+ rubygems_version: 3.6.2
95
91
  specification_version: 4
96
92
  summary: Simple callbacks/lightweight events on procs.
97
93
  test_files: