Sha256: f429ffdb4c5f2ac7737db1b712064741deae4e9ad07259cfe4113466d946e24d

Contents?: true

Size: 1.31 KB

Versions: 89

Compression:

Stored size: 1.31 KB

Contents

module Log
  class ProgressBar
    BAR_MUTEX = Mutex.new
    BARS = []
    REMOVE = []
    SILENCED = []

    def self.new_bar(max, options = {})
      cleanup_bars
      BAR_MUTEX.synchronize do
        #Log::LAST.replace "new_bar" if Log::LAST == "progress"
        options = Misc.add_defaults options, :depth => BARS.length
        BARS << (bar = ProgressBar.new(max, options))
        bar
      end
    end

    def self.cleanup_bars
      BAR_MUTEX.synchronize do
        REMOVE.each do |bar|
          index = BARS.index bar
          if index
            BARS.delete_at index
            BARS.each_with_index do |bar,i|
              bar.depth = i
            end
          end
          index = SILENCED.index bar
          if index
            SILENCED.delete_at index
            SILENCED.each_with_index do |bar,i|
              bar.depth = i
            end
          end
        end
        REMOVE.clear
        BARS.length
      end
    end

    def self.remove_bar(bar)
      bar.done if bar.respond_to? :done
      BAR_MUTEX.synchronize do
        REMOVE << bar
      end
    end

    def self.with_bar(max, options = {})
      bar = new_bar(max, options)
      begin
        yield bar
        keep = false
      rescue KeepBar
        keep = true
      ensure
        remove_bar(bar) if bar
      end
    end
  end
end

Version data entries

89 entries across 89 versions & 1 rubygems

Version Path
rbbt-util-5.20.2 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.20.1 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.20.0 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.37 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.36 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.35 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.34 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.32 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.31 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.30 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.29 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.28 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.27 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.26 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.25 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.24 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.23 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.22 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.21 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.19.20 lib/rbbt/util/log/progress/util.rb