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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c74f0ac2be7deb8aa466c27b4b4558852ebd4de838ada96d434650bb9c5bad0c
4
- data.tar.gz: 4d807c4126e1f272397d4cad1b38c2a5f3341616df90aab21b3efb621874e992
3
+ metadata.gz: 8a563adda0b8a791e3e69aa68e78e1e858080d9d69104cf6b904a7e54fffcec7
4
+ data.tar.gz: 5ac937b12c0e151afb4947df114d0706e55fa015a182a96a1fa59777f611c8f3
5
5
  SHA512:
6
- metadata.gz: b8a488ac1a4299128cd8ec4df072c4098a8b801bd080f34cf7e29353f47303ef4eb05e22b89ba56b5dae32e1e9f7edb5325333c11e132610aa13d4c882a287e2
7
- data.tar.gz: 2d40c0ce178370b135c91e8f49cd4e3f2f7fec3dc114849497afc2af3a8326523df09b1cf0362e512e4fa2d87b808db8b11c24325736dc582348ef9b0e556444
6
+ metadata.gz: 9cd2f29fbad5cb839152d5ec5c16dde3fcf70a25ff9a75d4bdb7397a874c06cac38bc8160c34a35d27107d31c067c1e8c14910d1a3433f6410c70ad474d1704d
7
+ data.tar.gz: 725560cdd79ff05b0f22cd2506128e806fb52a7f58dd48f078ae4fba486b630f8a5804d37e9b15d093dee10c79692160039750eace22cbb5be305543dd960375
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module SorbetView
5
- VERSION = '0.6.0'
5
+ VERSION = '0.7.0'
6
6
  end
@@ -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
- # Non-critical: if mapping fails, all ivars default to NilClass
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
- relative = path_str.sub(%r{^#{Regexp.escape(Dir.pwd)}/?}, '')
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet_view
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
  - kazuma