Sha256: f4c8d767ed90a9e5a738bd045cb5ccd070583497ad2f4c43fbbc8082a4f1acf8

Contents?: true

Size: 1.09 KB

Versions: 78

Compression:

Stored size: 1.09 KB

Contents

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

    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
        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

78 entries across 78 versions & 1 rubygems

Version Path
rbbt-util-5.14.18 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.17 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.16 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.15 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.14 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.12 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.11 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.10 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.9 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.8 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.7 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.6 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.5 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.4 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.3 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.2 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.1 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.14.0 lib/rbbt/util/log/progress/util.rb