rbs_config 0.2.1 → 1.1.0

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: 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