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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 231145af36301b87102f0b70743dd2697deb2a51eb25f3fd34723d7377dcfd5e
4
- data.tar.gz: b754c21b025f43b5c7fa8a8cb63075b470b2ed69aaf225b58c4557f071547dfd
3
+ metadata.gz: 87b602aac5580212cdda2ac42171483d375e5483cf2a3951a355258054ea68c6
4
+ data.tar.gz: 8276bd2eba5c98ad4db391c872655922496994625b40d341c1ce98babdab11d8
5
5
  SHA512:
6
- metadata.gz: eaa56f4afe1a4e4b39d3e7c57c678173b16be4799570dce225700d53a65ce7e4a654e739a8b8d924394d31eb04b2724045229ec66da01cdf4cf59d22c99d629c
7
- data.tar.gz: c066bb8d0beb1322ee5e3e143b5efd5ec058309a8b29de8190d28067e6112a32c33ab2373d8adc691254d7043c6ee72eae3717658a82435239ea20e86cf13316
6
+ metadata.gz: bf4d32b81ce17027337f76b618ad56617dba5c0b0eb4c484f0a2a1d3f8ca33f3b6cfd8f3d9cb97255862f0e661063045e3b8748fdb413f077849741c80bf2145
7
+ data.tar.gz: 4faed2572abec5e1335462092541b1ce8ed316f2f9dc90196c1c85d9f8970d32a6bedbf318bb15d397d2a02ccac21e24550cc051873a9f4d1616b0e2d6209dd2
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
- source "https://rubygems.org"
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- edrive (1.0.2)
4
+ edrive (1.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -22,7 +22,7 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- ### regist lambda & dispatch
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
- ### regist lambda & dispatch with data
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
- ### regist block
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
- ### regist block & dispatch with data
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
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "edrive"
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 "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -1,33 +1,37 @@
1
1
 
2
- lib = File.expand_path("../lib", __FILE__)
2
+ lib = File.expand_path('lib', __dir__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "edrive/version"
4
+ require 'edrive/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "edrive"
7
+ spec.name = 'edrive'
8
8
  spec.version = Edrive::VERSION
9
- spec.authors = ["MichinaoShimizu"]
10
- spec.email = ["shimizu.michinao@gmail.com"]
9
+ spec.authors = ['MichinaoShimizu']
10
+ spec.email = ['shimizu.michinao@gmail.com']
11
11
 
12
- spec.summary = %q{Generic Event Dispatcher. Provide simple event dispatcher mechanism for all of ruby products.
12
+ spec.summary = 'Generic Event Dispatcher.
13
+ Provide simple event dispatcher mechanism for all of ruby products.
13
14
 
14
- }
15
- spec.description = %q{Generic Event Dispatcher. Provide simple event dispatcher mechanism for all of ruby products.
15
+ '
16
+ spec.description = 'Generic Event Dispatcher.
17
+ Provide simple event dispatcher mechanism for all of ruby products.
16
18
 
17
- }
18
- spec.homepage = "https://github.com/MichinaoShimizu/edrive"
19
- spec.license = "MIT"
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 have been added into git.
23
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
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 = "exe"
31
+ spec.bindir = 'exe'
27
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_development_dependency "bundler", "~> 1.16"
31
- spec.add_development_dependency "rake", "~> 10.0"
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
@@ -1,5 +1,5 @@
1
- require "edrive/version"
2
- require "edrive/dispatcher"
1
+ require 'edrive/version'
2
+ require 'edrive/dispatcher'
3
3
 
4
4
  module Edrive
5
5
  # Your code goes here...
@@ -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, data = nil, *args)
27
- result = data
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
@@ -1,3 +1,3 @@
1
1
  module Edrive
2
- VERSION = "1.0.2"
2
+ VERSION = '1.0.3'.freeze
3
3
  end
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.2
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. Provide simple event dispatcher mechanism
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