Class: FileTreeVisualizer::CLI::ProgressRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/file_tree_visualizer/cli.rb

Constant Summary collapse

BAR_WIDTH =
28

Instance Method Summary collapse

Constructor Details

#initialize(io: $stdout, enabled: true, locale: DEFAULT_LOCALE) ⇒ ProgressRenderer

Returns a new instance of ProgressRenderer.



75
76
77
78
79
80
81
82
# File 'lib/file_tree_visualizer/cli.rb', line 75

def initialize(io: $stdout, enabled: true, locale: DEFAULT_LOCALE)
  @io = io
  @enabled = enabled && io.tty?
  @locale = locale
  @last_draw_at = nil
  @has_rendered = false
  @spinner_index = 0
end

Instance Method Details

#finish ⇒ Object



102
103
104
105
106
# File 'lib/file_tree_visualizer/cli.rb', line 102

def finish
  return unless @enabled

  @io.print("\n") if @has_rendered
end

#render(phase:, **data) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/file_tree_visualizer/cli.rb', line 84

def render(phase:, **data)
  return unless @enabled

  now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  return if @last_draw_at && now - @last_draw_at < 0.05

  @last_draw_at = now

  if phase == :counting
    render_counting(data)
  else
    render_scanning(data)
  end

  @has_rendered = true
  @io.flush
end