Sha256: 1e53ac1063808279827c8d0ec102a0166ae53afc3295744806c5ac5ff7ea956c

Contents?: true

Size: 1.64 KB

Versions: 30

Compression:

Stored size: 1.64 KB

Contents

require 'powerbar'

module Alula
  class ProgressBar < PowerBar
    attr_accessor :showing
    attr_accessor :message
    
    def initialize(message, total, opts = {})
      super(opts)
      
      @message = "%20s" % message
      @done = 0
      @total = total
      
      @showing = true
      
      self.settings.tty.finite.template.main = '${<msg>}: ${<percent>% } ${[<bar>] }${ ETA: <eta>}'
      self.settings.tty.finite.template.barchar = 'o'
      self.settings.tty.finite.template.padchar = ' '
    end
    
    def file_transfer_mode
      self.settings.tty.finite.template.main = '${<msg>}: ${<percent>% } ${[<bar>] }${<rate>/s }${<done>}${ ETA: <eta>}'
    end
    
    def render(opts = {})
      super({msg: @message, done: @done, total: @total}.merge(opts))
    end
    
    def step
      @done += 1
    end
    
    def set(value)
      @done = value
    end
    
    def vanish
      self.wipe
    end
    
    def finish(fill = true)
      # self.close(true)
      render(
        {
          :done => fill && !state.total.is_a?(Symbol) ? state.total : state.done,
          :tty => {
                    :finite => { :show_eta => false },
                    :infinite => { :show_eta => false },
                  },
          :notty => {
                    :finite => { :show_eta => false },
                    :infinite => { :show_eta => false },
                  },
        })
      # scope.output.call(scope.template.close) unless scope.template.close.nil?
      state.closed = true
    end
    
    private
    # Monkey-patch to force percentage always being three characters long
    def h_percent
      sprintf "%3d", percent
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
alula-0.4.27 lib/alula/progressbar.rb
alula-0.4.26 lib/alula/progressbar.rb
alula-0.4.25 lib/alula/progressbar.rb
alula-0.4.24 lib/alula/progressbar.rb
alula-0.4.23 lib/alula/progressbar.rb
alula-0.4.22 lib/alula/progressbar.rb
alula-0.4.21 lib/alula/progressbar.rb
alula-0.4.20 lib/alula/progressbar.rb
alula-0.4.19 lib/alula/progressbar.rb
alula-0.4.18 lib/alula/progressbar.rb
alula-0.4.17 lib/alula/progressbar.rb
alula-0.4.16 lib/alula/progressbar.rb
alula-0.4.15 lib/alula/progressbar.rb
alula-0.4.14 lib/alula/progressbar.rb
alula-0.4.13 lib/alula/progressbar.rb
alula-0.4.12 lib/alula/progressbar.rb
alula-0.4.11 lib/alula/progressbar.rb
alula-0.4.11a lib/alula/progressbar.rb
alula-0.4.10 lib/alula/progressbar.rb
alula-0.4.9 lib/alula/progressbar.rb