sorbet_view 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 +4 -4
- data/lib/sorbet_view/version.rb +1 -1
- data/lib/tapioca/dsl/compilers/sorbet_view.rb +16 -4
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8a563adda0b8a791e3e69aa68e78e1e858080d9d69104cf6b904a7e54fffcec7
|
|
4
|
+
data.tar.gz: 5ac937b12c0e151afb4947df114d0706e55fa015a182a96a1fa59777f611c8f3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9cd2f29fbad5cb839152d5ec5c16dde3fcf70a25ff9a75d4bdb7397a874c06cac38bc8160c34a35d27107d31c067c1e8c14910d1a3433f6410c70ad474d1704d
|
|
7
|
+
data.tar.gz: 725560cdd79ff05b0f22cd2506128e806fb52a7f58dd48f078ae4fba486b630f8a5804d37e9b15d093dee10c79692160039750eace22cbb5be305543dd960375
|
data/lib/sorbet_view/version.rb
CHANGED
|
@@ -80,17 +80,22 @@ module Tapioca
|
|
|
80
80
|
mapping_path = File.join(config.output_dir, '.defined_ivars.json')
|
|
81
81
|
FileUtils.mkdir_p(File.dirname(mapping_path))
|
|
82
82
|
File.write(mapping_path, JSON.pretty_generate(mapping))
|
|
83
|
-
rescue StandardError
|
|
84
|
-
|
|
83
|
+
rescue StandardError => e
|
|
84
|
+
$stderr.puts "[SorbetView] generate_ivar_mapping failed: #{e.class}: #{e.message}"
|
|
85
|
+
$stderr.puts e.backtrace&.first(5)&.join("\n")
|
|
85
86
|
end
|
|
86
87
|
|
|
87
88
|
# Resolve view directories from Rails, relative to project root
|
|
89
|
+
# Only include directories within the project (exclude gem paths)
|
|
88
90
|
sig { returns(T::Array[String]) }
|
|
89
91
|
def resolve_view_dirs
|
|
90
92
|
if defined?(::ActionController::Base) && ::ActionController::Base.respond_to?(:view_paths)
|
|
93
|
+
cwd = Dir.pwd
|
|
91
94
|
::ActionController::Base.view_paths.paths.filter_map do |p|
|
|
92
95
|
path_str = p.to_s
|
|
93
|
-
|
|
96
|
+
next unless path_str.start_with?(cwd)
|
|
97
|
+
|
|
98
|
+
relative = path_str.sub(%r{^#{Regexp.escape(cwd)}/?}, '')
|
|
94
99
|
relative unless relative.empty?
|
|
95
100
|
end
|
|
96
101
|
else
|
|
@@ -134,7 +139,7 @@ module Tapioca
|
|
|
134
139
|
next if name.nil? || name.empty?
|
|
135
140
|
next if type.nil? || type.empty?
|
|
136
141
|
|
|
137
|
-
result[name] = type
|
|
142
|
+
result[name] = normalize_type(type)
|
|
138
143
|
end
|
|
139
144
|
result
|
|
140
145
|
end
|
|
@@ -287,6 +292,13 @@ module Tapioca
|
|
|
287
292
|
[]
|
|
288
293
|
end
|
|
289
294
|
|
|
295
|
+
# Normalize Sorbet literal types to their base types
|
|
296
|
+
# e.g. String("test") → String, Integer(42) → Integer, Symbol(:foo) → Symbol
|
|
297
|
+
sig { params(type: String).returns(String) }
|
|
298
|
+
def normalize_type(type)
|
|
299
|
+
type.gsub(/\b([A-Z]\w*)\(.*?\)/) { $1 }
|
|
300
|
+
end
|
|
301
|
+
|
|
290
302
|
sig { params(str: String).returns(String) }
|
|
291
303
|
def camelize(str)
|
|
292
304
|
str.split('_').map(&:capitalize).join
|