lib/tapioca/compilers/requires_compiler.rb in tapioca-0.6.1 vs lib/tapioca/compilers/requires_compiler.rb in tapioca-0.6.2

- old
+ new

@@ -15,14 +15,13 @@ sig { returns(String) } def compile config = Spoom::Sorbet::Config.parse_file(@sorbet_path) files = collect_files(config) + names_in_project = files.map { |file| [File.basename(file, ".rb"), true] }.to_h files.flat_map do |file| - collect_requires(file).reject do |req| - name_in_project?(files, req) - end + collect_requires(file).reject { |req| names_in_project[req] } end.sort.uniq.map do |name| "require \"#{name}\"\n" end.join end @@ -43,13 +42,14 @@ end.sort.uniq end sig { params(file_path: String).returns(T::Enumerable[String]) } def collect_requires(file_path) - File.read(file_path).lines.map do |line| + File.binread(file_path).lines.map do |line| /^\s*require\s*(\(\s*)?['"](?<name>[^'"]+)['"](\s*\))?/.match(line) { |m| m["name"] } end.compact + .reject { |require| require.include?('#{') } # ignore interpolation end sig { params(config: Spoom::Sorbet::Config, file_path: Pathname).returns(T::Boolean) } def file_ignored_by_sorbet?(config, file_path) file_path_parts = path_parts(file_path) @@ -80,16 +80,9 @@ end sig { params(path: Pathname).returns(T::Array[String]) } def path_parts(path) T.unsafe(path).descend.map { |part| part.basename.to_s } - end - - sig { params(files: T::Enumerable[String], name: String).returns(T::Boolean) } - def name_in_project?(files, name) - files.any? do |file| - File.basename(file, ".rb") == name - end end end end end