yuuki 0.1.9 → 0.1.11

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: f1292e07e4b6a1e5d86613d99b7f91f423470db509339dd3979e973df9dca795
4
- data.tar.gz: 791dc8e464f081b7050b8de093c20b0f3ae11985778392f776caec0c148ffb99
3
+ metadata.gz: ff28f02789081137b0b76139d48a2fcda95ab46c024cc2215174046da5c9a3aa
4
+ data.tar.gz: 46ceab8dcc861c1658ae89ccb7201af70bca18cbc2894c662e1f9be33c13b5ef
5
5
  SHA512:
6
- metadata.gz: cbf737b5a801b69a18a37b038e31d6d14479d0dd4e04cb3d52a3af02e49e829bc2089ad270ce3413093c1105a07805340dc11b6349e258148e83e36cefd9b102
7
- data.tar.gz: d4479b48d82b3680a8b7a65c36678fea22b8c8cb36e39d7e7ed96c951d7012cff27e5f8fd24bc69133bb06efed956183c6036260ffe53eb3252188d5eeb81ca8
6
+ metadata.gz: 621bb047763a596447f9f0a212e5e73674b20608d6806a68606d248226c1765be34577305f34e820e1fda0053864ee5f53b463c7bccb5dcad2e54c3365133d99
7
+ data.tar.gz: 7dab2a98152bdb7fb00babfb865402ffe1b2498daeb4a4dfffe26d37a791acf9e38b29b0af0c6eaa6192a3429cab193dd585762023298dbdafac73ad855748c7
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'yuuki'
data/lib/yuuki/caller.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
4
3
  require 'yuuki/runner'
5
4
  require 'yoshinon'
6
5
 
@@ -10,7 +9,7 @@ module Yuuki
10
9
  # @param [String] require_dir directory
11
10
  # @param [Boolean] recursive
12
11
  def self.require_dir(require_dir, recursive: false)
13
- Dir.glob(recursive ? "#{require_dir}/**/*.rb" : "#{require_dir}/*.rb").sort.each {|file| require file}
12
+ Dir.glob(recursive ? "#{require_dir}/**/*.rb" : "#{require_dir}/*.rb").each { |file| require file }
14
13
  end
15
14
 
16
15
  # @param [Object] instances
@@ -56,33 +55,33 @@ module Yuuki
56
55
  def runners
57
56
  list = @instances.flat_map do |instance|
58
57
  methods = instance.class.instance_variable_get(:@yuuki_methods)
59
- methods.select {|_sig, meta| meta[:enabled]}.map {|sig, meta| [instance.method(sig), meta]}
58
+ methods.select { |_sig, meta| meta[:enabled] }.map { |sig, meta| [instance.method(sig), meta] }
60
59
  end
61
- list.sort_by {|_method, meta| -(meta[:priority] || 0)}
60
+ list.sort_by { |_method, meta| -(meta[:priority] || 0) }
62
61
  end
63
62
 
64
63
  # returns all tags defined as Set
65
64
  def tags
66
65
  tags = @instances.flat_map do |instance|
67
66
  methods = instance.class.instance_variable_get(:@yuuki_methods)
68
- methods.select {|_sig, meta| meta[:enabled]}.flat_map {|_sig, meta| meta[:tags]}
67
+ methods.select { |_sig, meta| meta[:enabled] }.flat_map { |_sig, meta| meta[:tags] }
69
68
  end
70
69
  ret = Set.new
71
- tags.each {|e| ret += e if e}
70
+ tags.each { |e| ret += e if e }
72
71
  ret
73
72
  end
74
73
 
75
74
  # runs all methods
76
75
  # @param [Object] args arguments
77
- def run(**args, &block)
78
- run_internal(runners, args, &block)
76
+ def run(**args, &)
77
+ run_internal(runners, args, &)
79
78
  end
80
79
 
81
80
  # runs all selected methods
82
81
  # @param [Proc] proc_select
83
82
  # @param [Object] args arguments
84
- def run_select(proc_select, **args, &block)
85
- run_internal(runners.select(&proc_select), args, &block)
83
+ def run_select(proc_select, **args, &)
84
+ run_internal(runners.select(&proc_select), args, &)
86
85
  end
87
86
 
88
87
  # set whether to ignore ``tag not associated'' error
@@ -93,7 +92,7 @@ module Yuuki
93
92
  # runs all methods with the specified tags
94
93
  # @param [Symbol] tags
95
94
  # @param [Object] args arguments
96
- def run_tag(*tags, **args, &block)
95
+ def run_tag(*tags, **args, &)
97
96
  t = self.tags
98
97
  tags.each do |e|
99
98
  next if t.include?(e)
@@ -101,20 +100,20 @@ module Yuuki
101
100
 
102
101
  warn "Yuuki Warning: tag `#{e}` is not associated"
103
102
  end
104
- run_select(proc {|_method, meta| meta[:tags]&.intersect?(tags)}, **args, &block)
103
+ run_select(proc { |_method, meta| meta[:tags]&.intersect?(tags) }, **args, &)
105
104
  end
106
105
 
107
106
  # runs the specific method
108
107
  # @param [Class, nil] klass
109
108
  # @param [Symbol, nil] method_sig method name
110
109
  # @param [Object] args arguments
111
- def run_method(klass, method_sig, **args, &block)
110
+ def run_method(klass, method_sig, **args, &)
112
111
  select_proc = proc do |method, _meta|
113
112
  flag_klass = klass ? method.receiver.instance_of?(klass) : true
114
113
  flag_method = method_sig ? method.name == method_sig : true
115
114
  flag_klass && flag_method
116
115
  end
117
- run_select(select_proc, **args, &block)
116
+ run_select(select_proc, **args, &)
118
117
  end
119
118
 
120
119
  # joins all runnning threads
@@ -149,10 +148,10 @@ module Yuuki
149
148
  end
150
149
 
151
150
  def run_method_internal(method, args, &block)
151
+ yoshinon = Yoshinon.lock if @use_yoshinon
152
152
  params = method.parameters
153
153
  return method[] if params.empty?
154
154
 
155
- yoshinon = Yoshinon.lock if @use_yoshinon
156
155
  params_array = []
157
156
  params_hash = {}
158
157
  params_block = nil
@@ -171,8 +170,8 @@ module Yuuki
171
170
 
172
171
  if nonspecified_last_opt
173
172
  # if there already exist non-specified :opt arguments, no more specified :opt argument is allowed
174
- raise Yuuki::Error, "A required argument '#{nonspecified_last_opt}' was not found"\
175
- " on running #{method.owner}::#{method.name}"" with optional argument '#{name}'"
173
+ raise Yuuki::Error, "A required argument '#{nonspecified_last_opt}' was not found " \
174
+ "on running #{method.owner}::#{method.name}" + " with optional argument '#{name}'"
176
175
  end
177
176
  params_array << args[name]
178
177
  when :rest
@@ -180,8 +179,8 @@ module Yuuki
180
179
 
181
180
  if nonspecified_last_opt
182
181
  # if there already exist non-specified :opt arguments, the :rest argument cannot be handled
183
- raise Yuuki::Error, "A required argument '#{nonspecified_last_opt}' not found"\
184
- " on running #{method.owner}::#{method.name}"" with rest argument '#{name}'"
182
+ raise Yuuki::Error, "A required argument '#{nonspecified_last_opt}' not found " \
183
+ "on running #{method.owner}::#{method.name}" + " with rest argument '#{name}'"
185
184
  end
186
185
  if args[name].respond_to?(:to_ary)
187
186
  params_array += args[name]
@@ -209,7 +208,7 @@ module Yuuki
209
208
  params_block = args[name]
210
209
  end
211
210
  end
212
- params_block = block unless params.any? {|type, _| type == :block}
211
+ params_block = block unless params.any? { |type, _| type == :block }
213
212
  params_hash.empty? ? method[*params_array, &params_block] : method[*params_array, **params_hash, &params_block]
214
213
  ensure
215
214
  yoshinon&.unlock
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'English'
3
4
  require 'yuuki/caller'
4
5
  require 'yuuki/runner'
5
6
  require 'yoshinon'
@@ -51,7 +52,7 @@ module Yuuki
51
52
  # runs the periodic caller
52
53
  # @param [Numeric] gmtoff GMT Offset
53
54
  # @param [Object] args arguments
54
- def run(gmtoff = Time.now.gmtoff, **args, &block)
55
+ def run(gmtoff = Time.now.gmtoff, **args, &)
55
56
  last_time = nil
56
57
  loop do
57
58
  @current_time = Time.now.to_f
@@ -65,14 +66,14 @@ module Yuuki
65
66
  l = last_time + gmtoff
66
67
  (l.div(meta[:periodic]) + 1) * meta[:periodic] <= c
67
68
  end
68
- run_select(select_proc, **args, &block)
69
+ run_select(select_proc, **args, &)
69
70
  rescue StandardError
70
- @on_error ? @on_error[$!] : raise
71
+ @on_error ? @on_error[$ERROR_INFO] : raise
71
72
  end
72
73
  @first_run = false
73
74
 
74
75
  last_time = @current_time
75
- ((@current_time + 1).floor - Time.now.to_f).tap {|e| sleep e if e > 0}
76
+ ((@current_time + 1).floor - Time.now.to_f).tap { |e| sleep e if e > 0 }
76
77
  end
77
78
  end
78
79
  end
data/lib/yuuki/runner.rb CHANGED
@@ -1,9 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
4
-
5
3
  module Yuuki
6
4
  module Runner
5
+ def self.extended(base)
6
+ base.define_method(:yuuki) do
7
+ @yuuki
8
+ end
9
+ end
10
+
7
11
  # adds methods to yuuki
8
12
  # @param [Symbol] methods method names
9
13
  def add(*methods)
@@ -47,12 +51,12 @@ module Yuuki
47
51
 
48
52
  # sets priority to the method
49
53
  # @param [Symbol] methods method names
50
- # @param [Numeric] priority
51
- def priority(*methods, priority)
54
+ # @param [Numeric] value
55
+ def priority(*methods, value)
52
56
  @yuuki_methods ||= {}
53
57
  methods.each do |method|
54
58
  @yuuki_methods[method] ||= {}
55
- @yuuki_methods[method][:priority] = priority
59
+ @yuuki_methods[method][:priority] = value
56
60
  end
57
61
  end
58
62
  end
data/lib/yuuki/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yuuki
4
- VERSION = '0.1.9'
4
+ VERSION = '0.1.11'
5
5
  end
data/sig/yuuki/runner.rbs CHANGED
@@ -9,6 +9,6 @@ module Yuuki
9
9
  def delete: (*Symbol methods) -> void
10
10
  def tag: (Symbol method, *Symbol tags) -> void
11
11
  def thread: (*Symbol methods, ?enabled: bool) -> void
12
- def priority: (*Symbol methods, Numeric priority) -> void
12
+ def priority: (*Symbol methods, Numeric value) -> void
13
13
  end
14
14
  end
data/yuuki.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'yoshinon'
28
28
  spec.add_development_dependency 'bundler'
29
+ spec.add_development_dependency 'minitest'
29
30
  spec.add_development_dependency 'pry'
30
31
  spec.add_development_dependency 'rake'
31
32
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yuuki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ishotihadus
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-06-17 00:00:00.000000000 Z
10
+ date: 2025-08-03 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: yoshinon
@@ -38,6 +37,20 @@ dependencies:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: minitest
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
41
54
  - !ruby/object:Gem::Dependency
42
55
  name: pry
43
56
  requirement: !ruby/object:Gem::Requirement
@@ -75,7 +88,6 @@ extra_rdoc_files: []
75
88
  files:
76
89
  - ".DS_Store"
77
90
  - ".gitignore"
78
- - ".rubocop.yml"
79
91
  - Gemfile
80
92
  - LICENSE.txt
81
93
  - README.md
@@ -98,7 +110,6 @@ homepage: https://github.com/ishotihadus/yuuki
98
110
  licenses:
99
111
  - MIT
100
112
  metadata: {}
101
- post_install_message:
102
113
  rdoc_options: []
103
114
  require_paths:
104
115
  - lib
@@ -113,8 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
124
  - !ruby/object:Gem::Version
114
125
  version: '0'
115
126
  requirements: []
116
- rubygems_version: 3.3.3
117
- signing_key:
127
+ rubygems_version: 3.6.2
118
128
  specification_version: 4
119
129
  summary: A caller / runner framework for Ruby
120
130
  test_files: []
data/.rubocop.yml DELETED
@@ -1,42 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.6
3
-
4
- Metrics/AbcSize:
5
- Max: 170
6
-
7
- Metrics/BlockLength:
8
- Max: 250
9
-
10
- Metrics/ClassLength:
11
- Max: 1000
12
-
13
- Metrics/CyclomaticComplexity:
14
- Max: 70
15
-
16
- Metrics/MethodLength:
17
- Max: 100
18
-
19
- Metrics/ModuleLength:
20
- Max: 1000
21
-
22
- Metrics/ParameterLists:
23
- Max: 50
24
-
25
- Metrics/PerceivedComplexity:
26
- Max: 80
27
-
28
- Layout/SpaceInsideBlockBraces:
29
- EnforcedStyle: no_space
30
- SpaceBeforeBlockParameters: false
31
-
32
- Style/Documentation:
33
- Enabled: false
34
-
35
- Style/NumericPredicate:
36
- EnforcedStyle: comparison
37
-
38
- Style/MultilineBlockChain:
39
- Enabled: false
40
-
41
- Style/SpecialGlobalVars:
42
- EnforcedStyle: use_perl_names