edrive 1.0.2 → 1.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 +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +1 -1
- data/README.md +28 -4
- data/Rakefile +3 -3
- data/bin/console +3 -3
- data/edrive.gemspec +24 -20
- data/lib/edrive.rb +2 -2
- data/lib/edrive/dispatcher.rb +29 -3
- data/lib/edrive/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87b602aac5580212cdda2ac42171483d375e5483cf2a3951a355258054ea68c6
|
4
|
+
data.tar.gz: 8276bd2eba5c98ad4db391c872655922496994625b40d341c1ce98babdab11d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf4d32b81ce17027337f76b618ad56617dba5c0b0eb4c484f0a2a1d3f8ca33f3b6cfd8f3d9cb97255862f0e661063045e3b8748fdb413f077849741c80bf2145
|
7
|
+
data.tar.gz: 4faed2572abec5e1335462092541b1ce8ed316f2f9dc90196c1c85d9f8970d32a6bedbf318bb15d397d2a02ccac21e24550cc051873a9f4d1616b0e2d6209dd2
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
3
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in edrive.gemspec
|
6
6
|
gemspec
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
###
|
25
|
+
### lambda & dispatch
|
26
26
|
|
27
27
|
```ruby
|
28
28
|
dispatcher = Edrive::Dispatcher.new
|
@@ -36,7 +36,7 @@ dispatcher.dispatch(:event)
|
|
36
36
|
3
|
37
37
|
```
|
38
38
|
|
39
|
-
###
|
39
|
+
### lambda & dispatch with data
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
dispatcher = Edrive::Dispatcher.new
|
@@ -49,7 +49,7 @@ dispatcher.dispatch_with_data(:event, 100)
|
|
49
49
|
106
|
50
50
|
```
|
51
51
|
|
52
|
-
###
|
52
|
+
### block
|
53
53
|
|
54
54
|
```ruby
|
55
55
|
dispatcher = Edrive::Dispatcher.new
|
@@ -63,7 +63,7 @@ dispatcher.dispatch(:event)
|
|
63
63
|
3
|
64
64
|
```
|
65
65
|
|
66
|
-
###
|
66
|
+
### block & dispatch with data
|
67
67
|
|
68
68
|
```ruby
|
69
69
|
dispatcher = Edrive::Dispatcher.new
|
@@ -75,6 +75,30 @@ dispatcher.dispatch_with_data(:event, 100)
|
|
75
75
|
106
|
76
76
|
```
|
77
77
|
|
78
|
+
### multi dispatch
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
dispatcher = Edrive::Dispatcher.new
|
82
|
+
dispatcher.subscribe(:event) { puts 1 }
|
83
|
+
dispatcher.multi_dispatch(3, :event)
|
84
|
+
|
85
|
+
1
|
86
|
+
1
|
87
|
+
1
|
88
|
+
```
|
89
|
+
|
90
|
+
### multi dispatch with data
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
dispatcher = Edrive::Dispatcher.new
|
94
|
+
dispatcher.subscribe(:event) { |data| data + 1 }
|
95
|
+
dispatcher.multi_dispatch_with_data(3, :event, 0)
|
96
|
+
|
97
|
+
1
|
98
|
+
2
|
99
|
+
3
|
100
|
+
```
|
101
|
+
|
78
102
|
### clear target event
|
79
103
|
|
80
104
|
```ruby
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'edrive'
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +10,5 @@ require "edrive"
|
|
10
10
|
# require "pry"
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
13
|
+
require 'irb'
|
14
14
|
IRB.start(__FILE__)
|
data/edrive.gemspec
CHANGED
@@ -1,33 +1,37 @@
|
|
1
1
|
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path('lib', __dir__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require 'edrive/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'edrive'
|
8
8
|
spec.version = Edrive::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['MichinaoShimizu']
|
10
|
+
spec.email = ['shimizu.michinao@gmail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
12
|
+
spec.summary = 'Generic Event Dispatcher.
|
13
|
+
Provide simple event dispatcher mechanism for all of ruby products.
|
13
14
|
|
14
|
-
|
15
|
-
spec.description
|
15
|
+
'
|
16
|
+
spec.description = 'Generic Event Dispatcher.
|
17
|
+
Provide simple event dispatcher mechanism for all of ruby products.
|
16
18
|
|
17
|
-
|
18
|
-
spec.homepage =
|
19
|
-
spec.license =
|
19
|
+
'
|
20
|
+
spec.homepage = 'https://github.com/MichinaoShimizu/edrive'
|
21
|
+
spec.license = 'MIT'
|
20
22
|
|
21
23
|
# Specify which files should be added to the gem when it is released.
|
22
|
-
# The `git ls-files -z` loads the files in the RubyGem that
|
23
|
-
|
24
|
-
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that
|
25
|
+
# have been added into git.
|
26
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
27
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
28
|
+
f.match(%r{^(test|spec|features)/})
|
29
|
+
end
|
25
30
|
end
|
26
|
-
spec.bindir =
|
31
|
+
spec.bindir = 'exe'
|
27
32
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = [
|
29
|
-
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
33
|
+
spec.require_paths = ['lib']
|
34
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
35
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
36
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
33
37
|
end
|
data/lib/edrive.rb
CHANGED
data/lib/edrive/dispatcher.rb
CHANGED
@@ -15,7 +15,7 @@ module Edrive
|
|
15
15
|
# @return [Array] registered handler list
|
16
16
|
def subscribe(event, handler = nil, &block)
|
17
17
|
hdl = block_given? ? block : handler
|
18
|
-
raise ArgumentError, 'handler must be proc object' unless hdl.is_a?(Proc)
|
18
|
+
raise ArgumentError, 'handler must be proc object.' unless hdl.is_a?(Proc)
|
19
19
|
regist(event, hdl)
|
20
20
|
end
|
21
21
|
|
@@ -23,14 +23,27 @@ module Edrive
|
|
23
23
|
# @param [Symbol] event event name
|
24
24
|
# @param [Mixed] args
|
25
25
|
# @return [Mixed] last handler return value
|
26
|
-
def dispatch(event,
|
27
|
-
result =
|
26
|
+
def dispatch(event, *args)
|
27
|
+
result = nil
|
28
28
|
@events[event]&.each { |hdl| result = hdl.call(*args) }
|
29
29
|
result
|
30
30
|
end
|
31
31
|
|
32
|
+
# multiple dispatch
|
33
|
+
# @param [Integer] loop_num loop num
|
34
|
+
# @param [Symbol] event event name
|
35
|
+
# @param [Mixed] *args
|
36
|
+
# @return [Mixed] last handler return value
|
37
|
+
def multi_dispatch(loop_num, event, *args)
|
38
|
+
raise ArgumentError, 'loop_num must be integer.' unless loop_num.is_a?(Integer)
|
39
|
+
result = nil
|
40
|
+
loop_num.times { result = dispatch(event, *args) }
|
41
|
+
result
|
42
|
+
end
|
43
|
+
|
32
44
|
# dispatch specific event handlers with data
|
33
45
|
# @param [Symbol] event event name
|
46
|
+
# @param [Mixed] data initial value
|
34
47
|
# @param [Mixed] args
|
35
48
|
# @return [Mixed] last handler return value
|
36
49
|
def dispatch_with_data(event, data, *args)
|
@@ -39,6 +52,19 @@ module Edrive
|
|
39
52
|
result
|
40
53
|
end
|
41
54
|
|
55
|
+
# multiple dispatch with data
|
56
|
+
# @param [integer] loop_num loop_num
|
57
|
+
# @param [Symbol] event event name
|
58
|
+
# @param [Mixed] data initial value
|
59
|
+
# @param [Mixed] *args
|
60
|
+
# @return [Mixed] last handler return value
|
61
|
+
def multi_dispatch_with_data(loop_num, event, data, *args)
|
62
|
+
raise ArgumentError, 'loop_num must be integer.' unless loop_num.is_a?(Integer)
|
63
|
+
result = data.dup
|
64
|
+
loop_num.times { result = dispatch_with_data(event, result, *args) }
|
65
|
+
result
|
66
|
+
end
|
67
|
+
|
42
68
|
# get event handlers
|
43
69
|
# @param [Symbol] event event name symbol
|
44
70
|
# @return [Array] registered handler list
|
data/lib/edrive/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edrive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MichinaoShimizu
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
-
description: "Generic Event Dispatcher
|
55
|
+
description: "Generic Event Dispatcher.\n Provide simple event dispatcher mechanism
|
56
56
|
for all of ruby products.\n\n "
|
57
57
|
email:
|
58
58
|
- shimizu.michinao@gmail.com
|