class StTools::ProgressBar

Attributes

executed_at[R]

Время выполнения всей операции в секундах (формируется после достижения max)

max[R]

Максимальное значение прогресс-бара

progress[R]

Текущее значение прогресс-бара

usage[R]

Количество вызовов метода progress=.

Public Class Methods

new(opts = {}) click to toggle source

Инициализация прогресс-бара

@param [Hash] opts параметры настройки прогресс-бара @option opts [String] :title заголовок прогресс-бара @option opts [Integer] :max максимальное значение @option opts [Integer] :progress текущее значение (по умолчанию 0) @option opts [String] :footer резюмирующая строка. Допускает два шаблона: [memory] и [executed_at], например:

"Завершено за [executed_at] секунд. Занятая память [memory]"

@option opts [Integer] :step шаг кратно которому реально перерисовывается прогресс-бар @return [Object] нет

# File lib/st_tools/progress_bar.rb, line 22
def initialize(opts = {})
  @title = opts[:title] || ''
  @max = opts[:max] || 100
  @progress = opts[:progress] || 0
  @footer = opts[:footer] || ''
  @step = opts[:step] || 100

  @usage = 1
  @executed_at = 0
  @start_at = ::Time.now

  init_progress_bar
end

Public Instance Methods

complete() click to toggle source

Метод финализирует значение прогресс-бара

@return [Object] нет

# File lib/st_tools/progress_bar.rb, line 57
def complete
  @pbar.progress = @max if @pbar.progress < @max
end
progress=(val) click to toggle source

Метод устанавливает новое значение прогресс-бара

@param [Integer] val новое значение прогресс-бара. Если равно max - то вызывается функция вывода футера @return [Object] нет

# File lib/st_tools/progress_bar.rb, line 40
def progress=(val)
  return if val > @max
  return if val == @value
  return if val % @step != 0 && (@max - val) >= @step

  @progress = val
  @pbar.progress = val
  @usage += 1

  if val >= @max
    puts_footer
  end
end

Private Instance Methods

init_progress_bar() click to toggle source
# File lib/st_tools/progress_bar.rb, line 64
def init_progress_bar
  puts @title if @title != ''

  @pbar = ::ProgressBar.create(:starting_at => 0, :total => @max, :progress_mark => '=',
                               :format => "%a |%B| %E", :throttle_rate => 1, :remainder_mark => '.')
end