rbs_heuristic_prototype 0.5.1 → 0.6.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: 27bbb60b69e731dbd572ba5ccb38e312c9620082e0aadd454be79f82cfd78bbe
4
- data.tar.gz: 329389107d5a1180a80cc5e51394915a4901f23eb40a74a268ce8a59c82239f0
3
+ metadata.gz: 5e7e11861501ff2a314a91b2f337ad4d2eb221ebe592370e45af6e92ea948702
4
+ data.tar.gz: 44ffa57df421f66295eca2b851a284aa081261ef54260cb2b504cad251462cf5
5
5
  SHA512:
6
- metadata.gz: 07a7565cf27c7be5128971b5b95eb91574f801f997c683aa43b8644c204f79d3f2bcba85c746d452372b0c2f30242beb21bcd6fa1c6cbe8d490f69470000904c
7
- data.tar.gz: 563a9a8d48b267a009c8640adcfb47c37e52f9a4fd88b172ed6f0356e6a05130fc522977e18f6ba99ae79c657a57bec326c10149f07cdb9edb6cf4e4b04145c2
6
+ metadata.gz: ab5dec88b9972879a5e138af3b6cec83570fde7dad9b639ce4d8a23b7c8e5f3658d58817b9fb0578bd201a511e5694b377a184842d933e08fdfb6608524ee848
7
+ data.tar.gz: 9f889db54fe192e9ec8e2b825fa65181e400f7f7459a1cc8a6a1f04917c6314390bd9c59194b87040e98e20859f345d5fde6f7bde803e2870dc13e4ebe31d44b
data/Gemfile.lock CHANGED
@@ -1,32 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbs_heuristic_prototype (0.5.1)
4
+ rbs_heuristic_prototype (0.6.0)
5
5
  activesupport
6
6
  rbs
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (7.0.7)
12
- actionview (= 7.0.7)
13
- activesupport (= 7.0.7)
11
+ actionpack (7.0.7.2)
12
+ actionview (= 7.0.7.2)
13
+ activesupport (= 7.0.7.2)
14
14
  rack (~> 2.0, >= 2.2.4)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
17
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
- actionview (7.0.7)
19
- activesupport (= 7.0.7)
18
+ actionview (7.0.7.2)
19
+ activesupport (= 7.0.7.2)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
- activemodel (7.0.7)
25
- activesupport (= 7.0.7)
26
- activerecord (7.0.7)
27
- activemodel (= 7.0.7)
28
- activesupport (= 7.0.7)
29
- activesupport (7.0.7)
24
+ activemodel (7.0.7.2)
25
+ activesupport (= 7.0.7.2)
26
+ activerecord (7.0.7.2)
27
+ activemodel (= 7.0.7.2)
28
+ activesupport (= 7.0.7.2)
29
+ activesupport (7.0.7.2)
30
30
  concurrent-ruby (~> 1.0, >= 1.0.2)
31
31
  i18n (>= 1.6, < 2)
32
32
  minitest (>= 5.1)
@@ -77,9 +77,9 @@ GEM
77
77
  rails-html-sanitizer (1.6.0)
78
78
  loofah (~> 2.21)
79
79
  nokogiri (~> 1.14)
80
- railties (7.0.7)
81
- actionpack (= 7.0.7)
82
- activesupport (= 7.0.7)
80
+ railties (7.0.7.2)
81
+ actionpack (= 7.0.7.2)
82
+ activesupport (= 7.0.7.2)
83
83
  method_source
84
84
  rake (>= 12.2)
85
85
  thor (~> 1.0)
@@ -108,7 +108,7 @@ GEM
108
108
  diff-lcs (>= 1.2.0, < 2.0)
109
109
  rspec-support (~> 3.12.0)
110
110
  rspec-support (3.12.0)
111
- rubocop (1.56.0)
111
+ rubocop (1.56.2)
112
112
  base64 (~> 0.1.1)
113
113
  json (~> 2.3)
114
114
  language_server-protocol (>= 3.17.0)
data/README.md CHANGED
@@ -39,6 +39,8 @@ by `rbs prototype` according to the heuristic rules.
39
39
  * This is useful to define intermediate modules automatically like what Rails and zeitwerk does.
40
40
  * Rule 5:
41
41
  * Convert a module reference without type arguments (ex. `include Enumerable`) to a module reference with type arguments (ex. `include Enumerable[untyped]`)
42
+ * Rule 6:
43
+ * Convert a module definition of controller concerns to have its module-self-types (ex. `module Loginable` to `module Loginable: ApplicationController`)
42
44
 
43
45
  ## Development
44
46
 
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+ require "active_support/concern"
5
+
6
+ module RbsHeuristicPrototype
7
+ module Filters
8
+ class ControllerConcernsFilter < Base
9
+ def process_module(decl)
10
+ mod = const_get(decl)
11
+ if controller_concern?(mod) && decl.self_types.empty?
12
+ RBS::AST::Declarations::Module.new(
13
+ name: decl.name,
14
+ type_params: decl.type_params,
15
+ members: decl.members,
16
+ self_types: self_types_for(mod),
17
+ annotations: decl.annotations,
18
+ location: decl.location,
19
+ comment: decl.comment
20
+ )
21
+ else
22
+ decl
23
+ end
24
+ end
25
+
26
+ def controller_concern?(mod)
27
+ return false unless mod.instance_variable_defined?(:@_dependencies)
28
+
29
+ source_location = Kernel.const_source_location(mod.name)
30
+ return false unless source_location
31
+
32
+ filename, = source_location.first
33
+ filename.include?("app/controllers/concerns")
34
+ end
35
+
36
+ def self_types_for(mod)
37
+ name = if Kernel.const_get("ApplicationController") && !(mod > ApplicationController)
38
+ TypeName("::ApplicationController")
39
+ else
40
+ TypeName("::ActionController::Base")
41
+ end
42
+
43
+ [RBS::AST::Declarations::Module::Self.new(name: name, args: [], location: nil)]
44
+ end
45
+ end
46
+ end
47
+ end
@@ -9,6 +9,7 @@ module RbsHeuristicPrototype
9
9
  FILTERS = {
10
10
  active_model_validations: "RbsHeuristicPrototype::Filters::ActiveModelValidationsFilter",
11
11
  boolean_methods: "RbsHeuristicPrototype::Filters::BooleanMethodsFilter",
12
+ controller_concerns: "RbsHeuristicPrototype::Filters::ControllerConcernsFilter",
12
13
  deep_module: "RbsHeuristicPrototype::Filters::DeepModuleFilter",
13
14
  symbol_array_constants: "RbsHeuristicPrototype::Filters::SymbolArrayConstantsFilter",
14
15
  type_args: "RbsHeuristicPrototype::Filters::TypeArgsFilter"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RbsHeuristicPrototype
4
- VERSION = "0.5.1"
4
+ VERSION = "0.6.0"
5
5
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "rbs_heuristic_prototype/filters/active_model_validations_filter"
4
4
  require_relative "rbs_heuristic_prototype/filters/boolean_methods_filter"
5
+ require_relative "rbs_heuristic_prototype/filters/controller_concerns_filter"
5
6
  require_relative "rbs_heuristic_prototype/filters/deep_module_filter"
6
7
  require_relative "rbs_heuristic_prototype/filters/symbol_array_constants_filter"
7
8
  require_relative "rbs_heuristic_prototype/filters/type_args_filter"
@@ -2,7 +2,7 @@
2
2
  sources:
3
3
  - type: git
4
4
  name: ruby/gem_rbs_collection
5
- revision: a4c633634493ab7ae73219022f56acff56ab69af
5
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
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: a4c633634493ab7ae73219022f56acff56ab69af
19
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
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: a4c633634493ab7ae73219022f56acff56ab69af
27
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
28
28
  remote: https://github.com/ruby/gem_rbs_collection.git
29
29
  repo_dir: gems
30
30
  - name: activemodel
@@ -32,7 +32,7 @@ gems:
32
32
  source:
33
33
  type: git
34
34
  name: ruby/gem_rbs_collection
35
- revision: a4c633634493ab7ae73219022f56acff56ab69af
35
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
36
36
  remote: https://github.com/ruby/gem_rbs_collection.git
37
37
  repo_dir: gems
38
38
  - name: activerecord
@@ -40,7 +40,7 @@ gems:
40
40
  source:
41
41
  type: git
42
42
  name: ruby/gem_rbs_collection
43
- revision: a4c633634493ab7ae73219022f56acff56ab69af
43
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
44
44
  remote: https://github.com/ruby/gem_rbs_collection.git
45
45
  repo_dir: gems
46
46
  - name: activesupport
@@ -48,7 +48,7 @@ gems:
48
48
  source:
49
49
  type: git
50
50
  name: ruby/gem_rbs_collection
51
- revision: a4c633634493ab7ae73219022f56acff56ab69af
51
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
52
52
  remote: https://github.com/ruby/gem_rbs_collection.git
53
53
  repo_dir: gems
54
54
  - name: ast
@@ -56,7 +56,7 @@ gems:
56
56
  source:
57
57
  type: git
58
58
  name: ruby/gem_rbs_collection
59
- revision: a4c633634493ab7ae73219022f56acff56ab69af
59
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
60
60
  remote: https://github.com/ruby/gem_rbs_collection.git
61
61
  repo_dir: gems
62
62
  - name: base64
@@ -72,7 +72,7 @@ gems:
72
72
  source:
73
73
  type: git
74
74
  name: ruby/gem_rbs_collection
75
- revision: a4c633634493ab7ae73219022f56acff56ab69af
75
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
76
76
  remote: https://github.com/ruby/gem_rbs_collection.git
77
77
  repo_dir: gems
78
78
  - name: date
@@ -84,7 +84,7 @@ gems:
84
84
  source:
85
85
  type: git
86
86
  name: ruby/gem_rbs_collection
87
- revision: a4c633634493ab7ae73219022f56acff56ab69af
87
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
88
88
  remote: https://github.com/ruby/gem_rbs_collection.git
89
89
  repo_dir: gems
90
90
  - name: json
@@ -112,7 +112,7 @@ gems:
112
112
  source:
113
113
  type: git
114
114
  name: ruby/gem_rbs_collection
115
- revision: a4c633634493ab7ae73219022f56acff56ab69af
115
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
116
116
  remote: https://github.com/ruby/gem_rbs_collection.git
117
117
  repo_dir: gems
118
118
  - name: optparse
@@ -124,7 +124,7 @@ gems:
124
124
  source:
125
125
  type: git
126
126
  name: ruby/gem_rbs_collection
127
- revision: a4c633634493ab7ae73219022f56acff56ab69af
127
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
128
128
  remote: https://github.com/ruby/gem_rbs_collection.git
129
129
  repo_dir: gems
130
130
  - name: pathname
@@ -136,7 +136,7 @@ gems:
136
136
  source:
137
137
  type: git
138
138
  name: ruby/gem_rbs_collection
139
- revision: a4c633634493ab7ae73219022f56acff56ab69af
139
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
140
140
  remote: https://github.com/ruby/gem_rbs_collection.git
141
141
  repo_dir: gems
142
142
  - name: rails-dom-testing
@@ -144,7 +144,7 @@ gems:
144
144
  source:
145
145
  type: git
146
146
  name: ruby/gem_rbs_collection
147
- revision: a4c633634493ab7ae73219022f56acff56ab69af
147
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
148
148
  remote: https://github.com/ruby/gem_rbs_collection.git
149
149
  repo_dir: gems
150
150
  - name: railties
@@ -152,7 +152,7 @@ gems:
152
152
  source:
153
153
  type: git
154
154
  name: ruby/gem_rbs_collection
155
- revision: a4c633634493ab7ae73219022f56acff56ab69af
155
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
156
156
  remote: https://github.com/ruby/gem_rbs_collection.git
157
157
  repo_dir: gems
158
158
  - name: rainbow
@@ -160,7 +160,7 @@ gems:
160
160
  source:
161
161
  type: git
162
162
  name: ruby/gem_rbs_collection
163
- revision: a4c633634493ab7ae73219022f56acff56ab69af
163
+ revision: 306d1aec19defeb177e217d8aad9812a52bcd5eb
164
164
  remote: https://github.com/ruby/gem_rbs_collection.git
165
165
  repo_dir: gems
166
166
  - name: rbs
@@ -0,0 +1,9 @@
1
+ module RbsHeuristicPrototype
2
+ module Filters
3
+ class BooleanMethodsFilter < Base
4
+ def process_module: (RBS::AST::Declarations::Module decl) -> RBS::AST::Declarations::Module
5
+ def controller_concern?: (Module mod) -> bool
6
+ def self_types_for: (Module mod) -> Array[RBS::AST::Declarations::Module::Self]
7
+ end
8
+ end
9
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbs_heuristic_prototype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.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-08-25 00:00:00.000000000 Z
11
+ date: 2023-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -61,6 +61,7 @@ files:
61
61
  - lib/rbs_heuristic_prototype/filters/active_model_validations_filter.rb
62
62
  - lib/rbs_heuristic_prototype/filters/base.rb
63
63
  - lib/rbs_heuristic_prototype/filters/boolean_methods_filter.rb
64
+ - lib/rbs_heuristic_prototype/filters/controller_concerns_filter.rb
64
65
  - lib/rbs_heuristic_prototype/filters/deep_module_filter.rb
65
66
  - lib/rbs_heuristic_prototype/filters/symbol_array_constants_filter.rb
66
67
  - lib/rbs_heuristic_prototype/filters/type_args_filter.rb
@@ -75,6 +76,7 @@ files:
75
76
  - sig/rbs_heuristic_prototype/filters/active_model_validations_filter.rbs
76
77
  - sig/rbs_heuristic_prototype/filters/base.rbs
77
78
  - sig/rbs_heuristic_prototype/filters/boolean_methods_filter.rbs
79
+ - sig/rbs_heuristic_prototype/filters/controller_concerns_filter.rbs
78
80
  - sig/rbs_heuristic_prototype/filters/deep_module_filter.rbs
79
81
  - sig/rbs_heuristic_prototype/filters/symbol_array_constants_filter.rbs
80
82
  - sig/rbs_heuristic_prototype/rake_task.rbs