rbs-trace 0.6.0 → 0.7.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: 8a25eb287a611f0c087e0419da03b0d45b53735e3e1bfa9bbcf9018940f640a1
4
- data.tar.gz: 70591151052c0e0695b3584b31551e0251987f8cc9b5c5c635db741d4b44c0d9
3
+ metadata.gz: 66c8c25570faea268f27c79d9a91cd4b0768e326e6c013fac3ea5bffb2c94bb5
4
+ data.tar.gz: 1fdefe3317b2a9c59600e1182fbfcd4b267020bc63c9bf9537f128b00d3543d7
5
5
  SHA512:
6
- metadata.gz: f3fd0ae96dc471248170fd72d639fc338026e7ecba577db2d3be8096652c9e28e9df4a1cf9c012a976da6951dcb0bbbcb12444d029206f9ac3384b9374538165
7
- data.tar.gz: 204295de73d9fee188d8c5568546b09bd295173937b9037f1e957f7a4b2952af502b2a58ce2fc01927e29bdeeb866e8950d3b9549cf3f4960759e94d745f5a2f
6
+ metadata.gz: ead299e9457dcd8c8b00b363110a57448cc935a6d634009d584966d9c913588708e48618b56a88ff69550f6fe7c2c911a5db33a51711b480f221ee36fe18b72c
7
+ data.tar.gz: 668d6007a51b4836fbd6c8ff0eadb9e59a30f60d1a53cf0498572778e6d27612e77bfb4426ffb44760433e2d3b9c9065cb01d36ede3f5a77c5115d168fa3fbd0
@@ -0,0 +1,17 @@
1
+ {
2
+ "image": "mcr.microsoft.com/devcontainers/base:1-bookworm",
3
+ "features": {
4
+ "ghcr.io/devcontainers/features/ruby:1": {
5
+ "version": "3.4.4"
6
+ }
7
+ },
8
+ "customizations": {
9
+ "vscode": {
10
+ "extensions": [
11
+ "GitHub.copilot",
12
+ "Shopify.ruby-lsp",
13
+ "soutaro.steep-vscode"
14
+ ]
15
+ }
16
+ }
17
+ }
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.7.0] - 2025-09-01
4
+
5
+ - feat: Add support for generics other than Array, Range, and Hash
6
+
3
7
  ## [0.6.0] - 2025-05-12
4
8
 
5
9
  - feat: Support inline comments using colon-prefixed RBS syntax
data/README.md CHANGED
@@ -139,6 +139,20 @@ $ rbs-trace inline --rb-dir=app --rb-dir=lib --comment-format=rbs_colon
139
139
  trace.save_files(out_dir: "sig/trace/")
140
140
  ```
141
141
 
142
+ ### Specify generics size
143
+
144
+ By default, generics are applied to the generated results only in the following classes.
145
+
146
+ - Array
147
+ - Hash
148
+ - Range
149
+
150
+ If any other classes require generics, configure them as follows.
151
+
152
+ ```ruby
153
+ trace.add_generics_size!("CSV::Table" => 1, "ActiveSupport::HashWithIndifferentAccess" => 2)
154
+ ```
155
+
142
156
  ### Parallel testing
143
157
 
144
158
  If you are using a parallel testing gem such as [parallel_tests](https://github.com/grosser/parallel_tests) or [flatware](https://github.com/briandunn/flatware), first save the type definitions in RBS files.
@@ -9,12 +9,12 @@ module RBS
9
9
  UNBOUND_NAME_METHOD = Class.instance_method(:name)
10
10
  private_constant :UNBOUND_CLASS_METHOD, :UNBOUND_NAME_METHOD
11
11
 
12
- GENERICS_SIZE = {
13
- Array => 1,
14
- Range => 1,
15
- Hash => 2
16
- }.freeze
17
- private_constant :GENERICS_SIZE
12
+ DEFAULT_GENERICS_SIZE = {
13
+ "Array" => 1,
14
+ "Range" => 1,
15
+ "Hash" => 2
16
+ }.freeze #: Hash[String, Integer]
17
+ private_constant :DEFAULT_GENERICS_SIZE
18
18
 
19
19
  # @rbs (bind: Binding, parameters: Array[__todo__], void: bool) -> Array[__todo__]
20
20
  def method_call(bind:, parameters:, void:)
@@ -37,6 +37,11 @@ module RBS
37
37
  AST::Members::MethodDefinition::Overload.new(method_type:, annotations: [])
38
38
  end
39
39
 
40
+ # @rbs () -> Hash[String, Integer]
41
+ def generics_size
42
+ @generics_size ||= DEFAULT_GENERICS_SIZE.dup
43
+ end
44
+
40
45
  private
41
46
 
42
47
  def stack_traces
@@ -115,7 +120,7 @@ module RBS
115
120
  elsif klass == Object || class_name.nil?
116
121
  type_untyped
117
122
  else
118
- size = GENERICS_SIZE[klass].to_i
123
+ size = generics_size[klass.name].to_i
119
124
  args = Array.new(size) { type_untyped }
120
125
  Types::ClassInstance.new(name: TypeName.parse(class_name), args:, location: nil)
121
126
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RBS
4
4
  class Trace
5
- VERSION = "0.6.0"
5
+ VERSION = "0.7.0"
6
6
  end
7
7
  end
data/lib/rbs/trace.rb CHANGED
@@ -62,6 +62,11 @@ module RBS
62
62
  files.each_value { |file| file.save_rbs(out_dir) }
63
63
  end
64
64
 
65
+ # @rbs (Hash[String, Integer]) -> Hash[String, Integer]
66
+ def add_generics_size!(additional_generics_size)
67
+ builder.generics_size.merge!(additional_generics_size)
68
+ end
69
+
65
70
  private
66
71
 
67
72
  # @rbs () -> Array[String]
@@ -9,7 +9,7 @@ module RBS
9
9
 
10
10
  UNBOUND_NAME_METHOD: untyped
11
11
 
12
- GENERICS_SIZE: untyped
12
+ DEFAULT_GENERICS_SIZE: Hash[String, Integer]
13
13
 
14
14
  # @rbs (bind: Binding, parameters: Array[__todo__], void: bool) -> Array[__todo__]
15
15
  def method_call: (bind: Binding, parameters: Array[__todo__], void: bool) -> Array[__todo__]
@@ -17,6 +17,9 @@ module RBS
17
17
  # @rbs (__todo__) -> AST::Members::MethodDefinition::Overload
18
18
  def method_return: (__todo__) -> AST::Members::MethodDefinition::Overload
19
19
 
20
+ # @rbs () -> Hash[String, Integer]
21
+ def generics_size: () -> Hash[String, Integer]
22
+
20
23
  private
21
24
 
22
25
  def stack_traces: () -> untyped
@@ -29,6 +29,9 @@ module RBS
29
29
  # @rbs (out_dir: String) -> void
30
30
  def save_files: (out_dir: String) -> void
31
31
 
32
+ # @rbs (Hash[String, Integer]) -> Hash[String, Integer]
33
+ def add_generics_size!: (Hash[String, Integer]) -> Hash[String, Integer]
34
+
32
35
  private
33
36
 
34
37
  # @rbs () -> Array[String]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbs-trace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takumi Shotoku
@@ -47,6 +47,7 @@ executables:
47
47
  extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
+ - ".devcontainer/devcontainer.json"
50
51
  - ".rspec"
51
52
  - ".rubocop.yml"
52
53
  - CHANGELOG.md
@@ -88,8 +89,8 @@ licenses:
88
89
  - MIT
89
90
  metadata:
90
91
  homepage_uri: https://github.com/sinsoku/rbs-trace
91
- source_code_uri: https://github.com/sinsoku/rbs-trace/tree/v0.6.0
92
- changelog_uri: https://github.com/sinsoku/rbs-trace/blob/v0.6.0/CHANGELOG.md
92
+ source_code_uri: https://github.com/sinsoku/rbs-trace/tree/v0.7.0
93
+ changelog_uri: https://github.com/sinsoku/rbs-trace/blob/v0.7.0/CHANGELOG.md
93
94
  rubygems_mfa_required: 'true'
94
95
  rdoc_options: []
95
96
  require_paths:
@@ -105,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
106
  - !ruby/object:Gem::Version
106
107
  version: '0'
107
108
  requirements: []
108
- rubygems_version: 3.6.7
109
+ rubygems_version: 3.6.9
109
110
  specification_version: 4
110
111
  summary: Automatically Insert inline RBS type declarations using runtime information.
111
112
  test_files: []