Class: RSpecTelemetry::Trace::Viewer::SourcePane

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

Constant Summary collapse

HEADER =
TuiTui::Style.new(attrs: [:reverse])
CODE =
TuiTui::Style.new(attrs: [:dim])
MARK =
TuiTui::Style.new(fg: :green, attrs: [:bold])

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(location:, lines:, target:) ⇒ SourcePane

Returns a new instance of SourcePane.



13
14
15
16
17
# File 'lib/rspec_telemetry/trace/viewer/source_pane.rb', line 13

def initialize(location:, lines:, target:)
  @location = location
  @lines = lines
  @target = target
end

Class Method Details

.numbered_line(number, text, target:) ⇒ Object



45
46
47
# File 'lib/rspec_telemetry/trace/viewer/source_pane.rb', line 45

def self.numbered_line(number, text, target:)
  "#{number == target ? "" : " "} #{number.to_s.rjust(4)}  #{text}"
end

Instance Method Details

#draw(canvas, rect) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rspec_telemetry/trace/viewer/source_pane.rb', line 19

def draw(canvas, rect)
  canvas.fill(TuiTui::Rect.new(row: rect.row, col: rect.col, rows: 1, cols: rect.cols), HEADER)
  canvas.text(
    rect.row,
    rect.col,
    TuiTui::DisplayText.new(" source: #{@location || "(none for this step)"}").truncate(rect.cols),
    HEADER
  )

  avail = rect.rows - 1
  return canvas if avail < 1
  return placeholder(canvas, rect.row + 1, rect.col, rect.cols) if @lines.nil?

  body = TuiTui::Rect.new(row: rect.row + 1, col: rect.col, rows: avail, cols: rect.cols)
  draw_window(canvas, body)
  canvas
end