Class: RDoc::Stats::Normal

Inherits:
Quiet
  • Object
show all
Defined in:
lib/rdoc/stats/normal.rb

Overview

Stats printer that prints just the files being documented with a progress bar

Direct Known Subclasses

Verbose

Instance Method Summary collapse

Methods inherited from Quiet

#initialize, #print_alias, #print_attribute, #print_class, #print_constant, #print_method, #print_module

Constructor Details

This class inherits a constructor from RDoc::Stats::Quiet

Instance Method Details

#begin_addingObject

:nodoc:


7
8
9
# File 'lib/rdoc/stats/normal.rb', line 7

def begin_adding # :nodoc:
  puts "Parsing sources..." if $stdout.tty?
end

#done_addingObject

:nodoc:


43
44
45
# File 'lib/rdoc/stats/normal.rb', line 43

def done_adding # :nodoc:
  puts if $stdout.tty?
end

Prints a file with a progress bar


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rdoc/stats/normal.rb', line 14

def print_file files_so_far, filename
  return unless $stdout.tty?

  progress_bar = sprintf("%3d%% [%2d/%2d]  ",
                         100 * files_so_far / @num_files,
                         files_so_far,
                         @num_files)

  # Print a progress bar, but make sure it fits on a single line. Filename
  # will be truncated if necessary.
  terminal_width = (ENV['COLUMNS'] || 80).to_i
  max_filename_size = terminal_width - progress_bar.size

  if filename.size > max_filename_size then
    # Turn "some_long_filename.rb" to "...ong_filename.rb"
    filename = filename[(filename.size - max_filename_size) .. -1]
    filename[0..2] = "..."
  end

  # Pad the line with whitespaces so that leftover output from the
  # previous line doesn't show up.
  line = "#{progress_bar}#{filename}"
  padding = terminal_width - line.size
  line << (" " * padding) if padding > 0

  $stdout.print("#{line}\r")
  $stdout.flush
end