Class: RSpecTelemetry::Trace::Viewer::SourceView

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec_telemetry/trace/viewer/source_view.rb

Instance Method Summary collapse

Constructor Details

#initialize(source_root:, base_dir:) ⇒ SourceView

Returns a new instance of SourceView.



13
14
15
# File 'lib/rspec_telemetry/trace/viewer/source_view.rb', line 13

def initialize(source_root:, base_dir:)
  @resolver = SourceResolver.new(source_root: source_root, base_dir: base_dir)
end

Instance Method Details

#draw(canvas, rect, location) ⇒ Object



17
18
19
20
21
22
# File 'lib/rspec_telemetry/trace/viewer/source_view.rb', line 17

def draw(canvas, rect, location)
  file, target = source_location(location)
  SourcePane
    .new(location: location, lines: file && @resolver.lines_for(file), target: target)
    .draw(canvas, rect)
end

#pager(location) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rspec_telemetry/trace/viewer/source_view.rb', line 24

def pager(location)
  return nil unless location

  file, target = source_location(location)
  lines = numbered_source(@resolver.lines_for(file), target, file)
  TuiTui::Pager.new(
    "source: #{location}",
    lines,
    start: [target - 4, 0].max,
    close_keys: ["S"],
    theme: Theme.base
  )
end