Module: Akainaa::Util

Defined in:
lib/akainaa/util.rb

Class Method Summary collapse

Class Method Details

.fullfill_multiline_method_calls(source_path, lines) ⇒ Array<Integer>

Parameters:

  • source_path (String)
  • lines (Array<Integer>)

Returns:

  • (Array<Integer>)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/akainaa/util.rb', line 11

def fullfill_multiline_method_calls(source_path, lines)
  result = Prism.parse_file(source_path)
  prog_node = result.value

  visitor = ::Akainaa::CallNodeVisitor.new
  visitor.visit(prog_node)

  fullfilled_lines = lines.dup

  visitor.multiline_method_calls.each do |method_range|
    call_count = lines[method_range.start_line_as_idx]
    next if call_count.nil?

    method_range.method_row_range_as_idx.each do |idx|
      if fullfilled_lines[idx].nil?
        fullfilled_lines[idx] = call_count
      elsif fullfilled_lines[idx] < call_count
        fullfilled_lines[idx] = call_count
      else
        # use as it is
      end
    end
  end

  fullfilled_lines
end