rbs_config 0.2.1 → 1.1.0

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: 214aeb4d1563d548e95f738b906554c68ddd2a2bad39bfb9fc0906a23eeba005
4
- data.tar.gz: 013072d9063caf8f220ed4dc7ed52470d755e8e80be9265dca1b37136e1299d6
3
+ metadata.gz: 24eeabd79c7be7168a33176e75662e4c61c0f3594a712953c4980982e60b0602
4
+ data.tar.gz: 35116e8c9950e0f81107f31391b403c332637cce00a2b17cbc3e47a2907ed652
5
5
  SHA512:
6
- metadata.gz: 177c407ec2c7f25d4081658816729faf91ccf66f69d38cf5ae5abbc3283625327d77565dc67a56b1e19f2d8ae03bfb3dba6d449f9aa0b7761279e95abbb8883a
7
- data.tar.gz: 2a3ed93b17a077d1ad9d718e05608f2a6efb2f19bffce73703ba206cfa28d445d096dc2b4b653f0a6532d36797c828ea2fd96de8df5eda3c6d416b0eadbb3b36
6
+ metadata.gz: e9b392490220fdb42cd055c6114c06d76fc5033dfa1098cf22f65ca1a01d038705936ce3e0609df55f4f85f9784a9efcf3f17326fd2e827bc74b325a56fc2eab
7
+ data.tar.gz: c2db7da5db96b3274642901f07c60ac74f1dee942231cecf827a2c3a2a6072df5559901950fcbf2bad93be6712019c18c17a091c13303190ef57665434bcd9c5
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ TargetRubyVersion: 2.7
3
3
 
4
4
  Style/Documentation:
5
5
  Enabled: false
data/Steepfile CHANGED
@@ -7,5 +7,5 @@ target :lib do
7
7
 
8
8
  check "lib"
9
9
 
10
- configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
10
+ configure_code_diagnostics(D::Ruby.lenient)
11
11
  end
@@ -23,10 +23,16 @@ module RbsConfig
23
23
  methods = generate_methods(config)
24
24
 
25
25
  format <<~RBS
26
- class #{class_name}
27
- #{classes.join("\n")}
28
- #{methods.join("\n")}
26
+ module Config
27
+ module Generated
28
+ class #{class_name} < ::Config::Options
29
+ #{classes.join("\n")}
30
+ #{methods.join("\n")}
31
+ end
32
+ end
29
33
  end
34
+
35
+ #{class_name}: Config::Generated::#{class_name}
30
36
  RBS
31
37
  end
32
38
 
@@ -41,30 +47,33 @@ module RbsConfig
41
47
 
42
48
  def generate_classes(config)
43
49
  config.filter_map do |key, value|
44
- next unless value.is_a?(Hash)
50
+ case value
51
+ when Array
52
+ generate_classes({ key => value.first }).first if value.first.is_a?(Hash)
53
+ when Hash
54
+ classes = generate_classes(value)
55
+ methods = generate_methods(value)
45
56
 
46
- classes = generate_classes(value)
47
- methods = generate_methods(value)
48
-
49
- <<~RBS
50
- class #{key.camelize}
51
- #{classes.join("\n")}
52
- #{methods.join("\n")}
53
- end
54
- RBS
57
+ <<~RBS
58
+ class #{key.camelize} < ::Config::Options
59
+ #{classes.join("\n")}
60
+ #{methods.join("\n")}
61
+ end
62
+ RBS
63
+ end
55
64
  end
56
65
  end
57
66
 
58
67
  def generate_methods(config)
59
68
  config.map do |key, value|
60
- "def self.#{key}: () -> #{stringify_type(key, value)}"
69
+ "def #{key}: () -> #{stringify_type(key, value)}"
61
70
  end
62
71
  end
63
72
 
64
73
  def stringify_type(name, value)
65
74
  case value
66
75
  when Hash
67
- "singleton(#{name.camelize})"
76
+ name.camelize
68
77
  when Array
69
78
  types = value.map { |v| stringify_type(name, v) }.uniq
70
79
  "Array[#{types.join(" | ")}]"
@@ -78,7 +87,15 @@ module RbsConfig
78
87
  end
79
88
 
80
89
  def load_config(files)
81
- files.map { |f| YAML.unsafe_load(f.read) }.inject { |a, b| a.deep_merge(b) }
90
+ configs = files.map do |f|
91
+ content = ERB.new(f.read).result
92
+ if YAML.respond_to?(:unsafe_load)
93
+ YAML.unsafe_load(content)
94
+ else
95
+ YAML.load(content) # rubocop:disable Security/YAMLLoad
96
+ end
97
+ end
98
+ configs.inject { |a, b| a.deep_merge(b) }
82
99
  end
83
100
  end
84
101
  end
@@ -36,7 +36,7 @@ module RbsConfig
36
36
  def define_generate_task
37
37
  desc "Generate RBS files for config gem"
38
38
  task "#{name}:generate" do
39
- require "rbs_config" # load RbsConfig lazily
39
+ require "rbs_config" # load RbsConfig lazily
40
40
 
41
41
  signature_root_dir.mkpath
42
42
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RbsConfig
4
- VERSION = "0.2.1"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -2,7 +2,7 @@
2
2
  sources:
3
3
  - type: git
4
4
  name: ruby/gem_rbs_collection
5
- revision: 5666e737d2b27a8425b4e3855c1a38cae54989f7
5
+ revision: c34ed02f870fb02571f664062eb13ef507702029
6
6
  remote: https://github.com/ruby/gem_rbs_collection.git
7
7
  repo_dir: gems
8
8
  path: ".gem_rbs_collection"
@@ -16,7 +16,7 @@ gems:
16
16
  source:
17
17
  type: git
18
18
  name: ruby/gem_rbs_collection
19
- revision: 5666e737d2b27a8425b4e3855c1a38cae54989f7
19
+ revision: c34ed02f870fb02571f664062eb13ef507702029
20
20
  remote: https://github.com/ruby/gem_rbs_collection.git
21
21
  repo_dir: gems
22
22
  - name: actionview
@@ -24,7 +24,7 @@ gems:
24
24
  source:
25
25
  type: git
26
26
  name: ruby/gem_rbs_collection
27
- revision: 5666e737d2b27a8425b4e3855c1a38cae54989f7
27
+ revision: c34ed02f870fb02571f664062eb13ef507702029
28
28
  remote: https://github.com/ruby/gem_rbs_collection.git
29
29
  repo_dir: gems
30
30
  - name: activesupport
@@ -32,7 +32,7 @@ gems:
32
32
  source:
33
33
  type: git
34
34
  name: ruby/gem_rbs_collection
35
- revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
35
+ revision: c34ed02f870fb02571f664062eb13ef507702029
36
36
  remote: https://github.com/ruby/gem_rbs_collection.git
37
37
  repo_dir: gems
38
38
  - name: ast
@@ -40,7 +40,7 @@ gems:
40
40
  source:
41
41
  type: git
42
42
  name: ruby/gem_rbs_collection
43
- revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
43
+ revision: c34ed02f870fb02571f664062eb13ef507702029
44
44
  remote: https://github.com/ruby/gem_rbs_collection.git
45
45
  repo_dir: gems
46
46
  - name: base64
@@ -56,19 +56,31 @@ gems:
56
56
  source:
57
57
  type: git
58
58
  name: ruby/gem_rbs_collection
59
- revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
59
+ revision: c34ed02f870fb02571f664062eb13ef507702029
60
60
  remote: https://github.com/ruby/gem_rbs_collection.git
61
61
  repo_dir: gems
62
62
  - name: date
63
63
  version: '0'
64
64
  source:
65
65
  type: stdlib
66
+ - name: dbm
67
+ version: '0'
68
+ source:
69
+ type: stdlib
70
+ - name: erb
71
+ version: '0'
72
+ source:
73
+ type: stdlib
74
+ - name: fileutils
75
+ version: '0'
76
+ source:
77
+ type: stdlib
66
78
  - name: i18n
67
79
  version: '1.10'
68
80
  source:
69
81
  type: git
70
82
  name: ruby/gem_rbs_collection
71
- revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
83
+ revision: c34ed02f870fb02571f664062eb13ef507702029
72
84
  remote: https://github.com/ruby/gem_rbs_collection.git
73
85
  repo_dir: gems
74
86
  - name: json
@@ -100,19 +112,31 @@ gems:
100
112
  source:
101
113
  type: git
102
114
  name: ruby/gem_rbs_collection
103
- revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
115
+ revision: c34ed02f870fb02571f664062eb13ef507702029
116
+ remote: https://github.com/ruby/gem_rbs_collection.git
117
+ repo_dir: gems
118
+ - name: parser
119
+ version: '3.2'
120
+ source:
121
+ type: git
122
+ name: ruby/gem_rbs_collection
123
+ revision: c34ed02f870fb02571f664062eb13ef507702029
104
124
  remote: https://github.com/ruby/gem_rbs_collection.git
105
125
  repo_dir: gems
106
126
  - name: pathname
107
127
  version: '0'
108
128
  source:
109
129
  type: stdlib
130
+ - name: pstore
131
+ version: '0'
132
+ source:
133
+ type: stdlib
110
134
  - name: rack
111
135
  version: '2.2'
112
136
  source:
113
137
  type: git
114
138
  name: ruby/gem_rbs_collection
115
- revision: 5666e737d2b27a8425b4e3855c1a38cae54989f7
139
+ revision: c34ed02f870fb02571f664062eb13ef507702029
116
140
  remote: https://github.com/ruby/gem_rbs_collection.git
117
141
  repo_dir: gems
118
142
  - name: railties
@@ -120,7 +144,7 @@ gems:
120
144
  source:
121
145
  type: git
122
146
  name: ruby/gem_rbs_collection
123
- revision: 5666e737d2b27a8425b4e3855c1a38cae54989f7
147
+ revision: c34ed02f870fb02571f664062eb13ef507702029
124
148
  remote: https://github.com/ruby/gem_rbs_collection.git
125
149
  repo_dir: gems
126
150
  - name: rainbow
@@ -128,17 +152,49 @@ gems:
128
152
  source:
129
153
  type: git
130
154
  name: ruby/gem_rbs_collection
131
- revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
155
+ revision: c34ed02f870fb02571f664062eb13ef507702029
156
+ remote: https://github.com/ruby/gem_rbs_collection.git
157
+ repo_dir: gems
158
+ - name: rake
159
+ version: '13.0'
160
+ source:
161
+ type: git
162
+ name: ruby/gem_rbs_collection
163
+ revision: c34ed02f870fb02571f664062eb13ef507702029
132
164
  remote: https://github.com/ruby/gem_rbs_collection.git
133
165
  repo_dir: gems
134
166
  - name: rbs
135
- version: 3.2.0
167
+ version: 3.1.3
136
168
  source:
137
169
  type: rubygems
138
170
  - name: rdoc
139
171
  version: '0'
140
172
  source:
141
173
  type: stdlib
174
+ - name: regexp_parser
175
+ version: '2.8'
176
+ source:
177
+ type: git
178
+ name: ruby/gem_rbs_collection
179
+ revision: c34ed02f870fb02571f664062eb13ef507702029
180
+ remote: https://github.com/ruby/gem_rbs_collection.git
181
+ repo_dir: gems
182
+ - name: rubocop
183
+ version: '1.57'
184
+ source:
185
+ type: git
186
+ name: ruby/gem_rbs_collection
187
+ revision: c34ed02f870fb02571f664062eb13ef507702029
188
+ remote: https://github.com/ruby/gem_rbs_collection.git
189
+ repo_dir: gems
190
+ - name: rubocop-ast
191
+ version: '1.30'
192
+ source:
193
+ type: git
194
+ name: ruby/gem_rbs_collection
195
+ revision: c34ed02f870fb02571f664062eb13ef507702029
196
+ remote: https://github.com/ruby/gem_rbs_collection.git
197
+ repo_dir: gems
142
198
  - name: securerandom
143
199
  version: '0'
144
200
  source:
@@ -147,10 +203,22 @@ gems:
147
203
  version: '0'
148
204
  source:
149
205
  type: stdlib
206
+ - name: strscan
207
+ version: '0'
208
+ source:
209
+ type: stdlib
150
210
  - name: tempfile
151
211
  version: '0'
152
212
  source:
153
213
  type: stdlib
214
+ - name: thor
215
+ version: '1.2'
216
+ source:
217
+ type: git
218
+ name: ruby/gem_rbs_collection
219
+ revision: c34ed02f870fb02571f664062eb13ef507702029
220
+ remote: https://github.com/ruby/gem_rbs_collection.git
221
+ repo_dir: gems
154
222
  - name: time
155
223
  version: '0'
156
224
  source:
@@ -159,8 +227,20 @@ gems:
159
227
  version: '0'
160
228
  source:
161
229
  type: stdlib
230
+ - name: tzinfo
231
+ version: '2.0'
232
+ source:
233
+ type: git
234
+ name: ruby/gem_rbs_collection
235
+ revision: c34ed02f870fb02571f664062eb13ef507702029
236
+ remote: https://github.com/ruby/gem_rbs_collection.git
237
+ repo_dir: gems
162
238
  - name: uri
163
239
  version: '0'
164
240
  source:
165
241
  type: stdlib
242
+ - name: yaml
243
+ version: '0'
244
+ source:
245
+ type: stdlib
166
246
  gemfile_lock_path: Gemfile.lock
data/rbs_collection.yaml CHANGED
@@ -24,3 +24,5 @@ gems:
24
24
  - name: pathname
25
25
  - name: rack
26
26
  - name: railties
27
+ - name: thor
28
+ - name: yaml
data/rbs_config.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "A RBS files generator for Config gem"
13
13
  spec.homepage = "https://github.com/tk0miya/rbs_config"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
15
+ spec.required_ruby_version = ">= 2.7.0"
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = spec.homepage
@@ -1,19 +1,19 @@
1
1
  module RbsConfig
2
2
  module RailsConfig
3
- def self.generate: (mapping: Hash[untyped, Hash[untyped, untyped] | ActiveSupport::OrderedOptions[untyped, untyped]]) -> String
3
+ def self.generate: (mapping: Hash[untyped, Hash[untyped, untyped] | ActiveSupport::OrderedOptions]) -> String
4
4
 
5
5
  class Generator
6
- attr_reader mapping: Hash[untyped, Hash[untyped, untyped] | ActiveSupport::OrderedOptions[untyped, untyped]]
6
+ attr_reader mapping: Hash[untyped, Hash[untyped, untyped] | ActiveSupport::OrderedOptions]
7
7
 
8
- def initialize: (mapping: Hash[untyped, Hash[untyped, untyped] | ActiveSupport::OrderedOptions[untyped, untyped]]) -> void
8
+ def initialize: (mapping: Hash[untyped, Hash[untyped, untyped] | ActiveSupport::OrderedOptions]) -> void
9
9
  def generate: () -> String
10
10
 
11
11
  private
12
12
 
13
13
  def format: (String rbs) -> String
14
- def generate_classes: (Hash[untyped, untyped] | ActiveSupport::OrderedOptions[untyped, untyped] config) -> Array[String]
15
- def generate_methods: (Hash[untyped, untyped] | ActiveSupport::OrderedOptions[untyped, untyped] config) -> Array[string]
16
- def generate_ordered_options_methods: (ActiveSupport::OrderedOptions[untyped, untyped] config) -> Array[string]
14
+ def generate_classes: (Hash[untyped, untyped] | ActiveSupport::OrderedOptions config) -> Array[String]
15
+ def generate_methods: (Hash[untyped, untyped] | ActiveSupport::OrderedOptions config) -> Array[string]
16
+ def generate_ordered_options_methods: (ActiveSupport::OrderedOptions config) -> Array[string]
17
17
  def generate_hash_methods: (Hash[untyped, untyped]) -> Array[string]
18
18
  def stringify_type: (untyped name, untyped value) -> String
19
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbs_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi KOMIYA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-02 00:00:00.000000000 Z
11
+ date: 2024-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -66,8 +66,6 @@ files:
66
66
  - sig/rbs_config/config.rbs
67
67
  - sig/rbs_config/rails_config.rbs
68
68
  - sig/rbs_config/rake_task.rbs
69
- - sig/shims/rake.rbs
70
- - sig/shims/thor.rbs
71
69
  homepage: https://github.com/tk0miya/rbs_config
72
70
  licenses:
73
71
  - MIT
@@ -83,14 +81,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
81
  requirements:
84
82
  - - ">="
85
83
  - !ruby/object:Gem::Version
86
- version: 2.6.0
84
+ version: 2.7.0
87
85
  required_rubygems_version: !ruby/object:Gem::Requirement
88
86
  requirements:
89
87
  - - ">="
90
88
  - !ruby/object:Gem::Version
91
89
  version: '0'
92
90
  requirements: []
93
- rubygems_version: 3.4.10
91
+ rubygems_version: 3.4.19
94
92
  signing_key:
95
93
  specification_version: 4
96
94
  summary: A RBS files generator for Config gem
data/sig/shims/rake.rbs DELETED
@@ -1,18 +0,0 @@
1
- module Rake
2
- class TaskLib
3
- include Rake::DSL
4
- end
5
-
6
- module DSL
7
- private
8
-
9
- def desc: (String description) -> void
10
- def file: (*untyped args) ?{ () -> void } -> void
11
- def import: (*String fns) -> void
12
- def multitask: (*untyped args) ?{ () -> void } -> void
13
- def namespace: (?String? name) ?{ () -> void } -> void
14
- def rule: (*untyped args) ?{ () -> void } -> void
15
- def task: (*untyped args) ?{ () -> void } -> void
16
- def sh: (*String cmd) ?{ (bool, Process::Status) -> void } -> void
17
- end
18
- end
data/sig/shims/thor.rbs DELETED
@@ -1,5 +0,0 @@
1
- class Thor
2
- module Actions
3
- def create_file: (String destination, *String? args, ?config: bool) ?{ () -> void } -> untyped
4
- end
5
- end