yuuki 0.1.3 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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