Class: Spoom::Sorbet::Sigs
- Inherits:
-
Object
- Object
- Spoom::Sorbet::Sigs
- Defined in:
- lib/spoom/sorbet/sigs.rb
Defined Under Namespace
Classes: Error, RBIToRBSTranslator, RBSToRBITranslator, Scanner, SigsLocator
Class Method Summary collapse
-
.rbi_to_rbs(ruby_contents) ⇒ Object
: (String ruby_contents) -> String.
-
.rbs_to_rbi(ruby_contents) ⇒ Object
: (String ruby_contents) -> String.
-
.strip(ruby_contents) ⇒ Object
: (String ruby_contents) -> String.
Class Method Details
.rbi_to_rbs(ruby_contents) ⇒ Object
: (String ruby_contents) -> String
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/spoom/sorbet/sigs.rb', line 24 def rbi_to_rbs(ruby_contents) ruby_contents = ruby_contents.dup sigs = collect_sorbet_sigs(ruby_contents) sigs.each do |sig, node| scanner = Scanner.new(ruby_contents) start_index = scanner.find_char_position( T.must(sig.loc&.begin_line&.pred), T.must(sig.loc).begin_column, ) end_index = scanner.find_char_position( sig.loc&.end_line&.pred, T.must(sig.loc).end_column, ) ruby_contents[start_index...end_index] = RBIToRBSTranslator.translate(sig, node) end ruby_contents end |
.rbs_to_rbi(ruby_contents) ⇒ Object
: (String ruby_contents) -> String
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/spoom/sorbet/sigs.rb', line 45 def rbs_to_rbi(ruby_contents) ruby_contents = ruby_contents.dup rbs_comments = collect_rbs_comments(ruby_contents) rbs_comments.each do |rbs_comment, node| scanner = Scanner.new(ruby_contents) start_index = scanner.find_char_position( T.must(rbs_comment.loc&.begin_line&.pred), T.must(rbs_comment.loc).begin_column, ) end_index = scanner.find_char_position( rbs_comment.loc&.end_line&.pred, T.must(rbs_comment.loc).end_column, ) ruby_contents[start_index...end_index] = RBSToRBITranslator.translate(rbs_comment, node) end ruby_contents end |
.strip(ruby_contents) ⇒ Object
: (String ruby_contents) -> String
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/spoom/sorbet/sigs.rb', line 12 def strip(ruby_contents) sigs = collect_sorbet_sigs(ruby_contents) lines_to_strip = sigs.flat_map { |sig, _| (sig.loc&.begin_line..sig.loc&.end_line).to_a } lines = [] ruby_contents.lines.each_with_index do |line, index| lines << line unless lines_to_strip.include?(index + 1) end lines.join end |