yuuki 0.1.3 → 0.1.7

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: 49851d0c15f259e4c54568ff173a45b9ae9316e25c4120fd3d12926f2560fcfb
4
- data.tar.gz: f17a0f2ec8d4de59becb43c9f6e4de08de3b38534583250f1899da127576188c
3
+ metadata.gz: d008fa930697e3248e20acbc34df7cfcdbd1abbd9bd25ea21cea696e43aafd6d
4
+ data.tar.gz: 8a30c007f19d4215c96e5acd6ad427875411cb4d5f057cbe612e3c081d6cfec2
5
5
  SHA512:
6
- metadata.gz: a2ef440f3446c5d737abfa611f81731b06905189013c3220560a00a9f0e23d6422180a699934a9161711390a49d2e5bbf61f5178bd4316c6c1bcc2e1bad33889
7
- data.tar.gz: 895d9874e7455840667ea75a90bb02c669d5b384a88b0412ee3bd4be58082465489317b483d2b8e28de81d6d2224f5819bb6af5b34fb1bb9a907b1db053e4164
6
+ metadata.gz: f0014990d77135e9d2d93b07580d999b2694b645319cbf8d227938b2fb94f55239d3dff57db10ec6f3c6cd9dd5a99005e47d257c7a96bb8b9f4f62c0c240e3dc
7
+ data.tar.gz: e7275a43d674ef004158731998c577d751dcc72d4054238592d1d0e438af2744bba4465902a5f330e7fa174a531c498e7770654581356b9f08d0fc989d473493
data/lib/yuuki/caller.rb CHANGED
@@ -53,6 +53,17 @@ module Yuuki
53
53
  list.sort_by{|_method, meta| -(meta[:priority] || 0)}
54
54
  end
55
55
 
56
+ # returns all tags defined as Set
57
+ def tags
58
+ tags = @instances.flat_map do |instance|
59
+ methods = instance.class.instance_variable_get(:@yuuki_methods)
60
+ methods.select{|_sig, meta| meta[:enabled]}.flat_map{|_sig, meta| meta[:tags]}
61
+ end
62
+ ret = Set.new
63
+ tags.each{|e| ret += e if e}
64
+ ret
65
+ end
66
+
56
67
  # runs all methods
57
68
  # @param [Object] args arguments
58
69
  def run(**args, &block)
@@ -66,10 +77,21 @@ module Yuuki
66
77
  run_internal(runners.select(&proc_select), args, &block)
67
78
  end
68
79
 
80
+ # set whether to ignore ``tag not associated'' error
81
+ def ignore_tag_error(enabled: true)
82
+ @ignore_tag_error = enabled
83
+ end
84
+
69
85
  # runs all methods with the specified tags
70
86
  # @param [Symbol] tags
71
87
  # @param [Object] args arguments
72
88
  def run_tag(*tags, **args, &block)
89
+ t = self.tags
90
+ tags.each do |e|
91
+ next if t.include?(e)
92
+ raise Yuuki::Error, "tag `#{e}` is not associated" unless @ignore_tag_error
93
+ warn "Yuuki Warning: tag `#{e}` is not associated"
94
+ end
73
95
  run_select(proc{|_method, meta| meta[:tags]&.intersect?(tags)}, **args, &block)
74
96
  end
75
97
 
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.3'
4
+ VERSION = '0.1.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yuuki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ishotihadus
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-30 00:00:00.000000000 Z
11
+ date: 2022-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler