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.17.35 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.33 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.32 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.31 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.30 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.29 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.28 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.27 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.26 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.25 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.24 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.23 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.22 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.21 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.20 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.19 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.18 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.17 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.16 lib/rbbt/util/log/progress/util.rb
rbbt-util-5.17.15 lib/rbbt/util/log/progress/util.rb