Sha256: abee411e8fcf5710ffc91eb1872446c9ca1dbe44cfa494d99d06fa900147ca15

Contents?: true

Size: 1.66 KB

Versions: 25

Compression:

Stored size: 1.66 KB

Contents

require 'rbbt/util/log'
require 'rbbt/util/log/progress/util'
require 'rbbt/util/log/progress/report'
module Log
  class ProgressBar

    attr_accessor :max, :ticks, :frequency, :depth, :desc, :file, :bytes
    def initialize(max = nil, options = {})
      options = Misc.add_defaults options, :depth => 0, :num_reports => 100, :desc => "Progress", :io => STDERR, :severity => Log.severity
      depth, num_reports, desc, io, severity, file, bytes = Misc.process_options options, :depth, :num_reports, :desc, :io, :severity, :file, :bytes

      @max = max
      @ticks = 0
      @frequency = 2
      @last_time = nil
      @last_count = nil
      @last_percent = nil
      @depth = depth
      @desc = desc.nil? ? "Progress" : desc.gsub(/\n/,' ')
      @file = file
    end

    def percent
      return 0 if @ticks == 0
      return 100 if @max == 0
      (@ticks * 100) / @max
    end

    def init
      @start = @last_time = Time.now
      @last_count = 0
      report
    end

    def tick(step = 1)
      return if ENV["RBBT_NO_PROGRESS"] == "true"
      @ticks += step

      begin
        time = Time.now
        if @last_time.nil?
          @last_time = time
          @last_count = @ticks
          @start = time
          return
        end

        diff = time - @last_time
        report and return if diff > @frequency
        return unless max and max > 0

        percent = self.percent
        if @last_percent.nil?
          @last_percent = percent
          return
        end
        report and return if percent > @last_percent and diff > 0.3
      rescue Exception
        Log.warn "Exception during report: " << $!.message
        Log.exception $!
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
rbbt-util-5.20.22 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.21 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.20 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.18 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.17 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.16 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.15 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.14 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.13 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.12 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.11 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.10 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.9 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.8 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.7 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.6 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.5 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.4 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.3 lib/rbbt/util/log/progress.rb
rbbt-util-5.20.2 lib/rbbt/util/log/progress.rb