class ProgressBar

プログレスバーを表示する.

prg= ProgressBar.new
prg.show_percent = true
prg.size = 60
prg.start("downloading\n")
100.times{|i|
  prg.progress(i, "#{i}/100")
  sleep 0.015
}
prg.end("done")

Attributes

bar_char_done[RW]
bar_char_undone[RW]
out[RW]
show_percent[RW]
size[RW]

Public Class Methods

new() click to toggle source
# File lib/rbsync.rb, line 514
def initialize()
  @out = $stdout
  @size = 10
  @bar_char_undone = "_"
  @bar_char_done   = "#"
  @show_percent    = true
  @printend_max_size = 0
end

Public Instance Methods

clear() click to toggle source
# File lib/rbsync.rb, line 533
def clear()
  out.print "\r"
  line_size = [@printend_max_size, @size].max
  out.print " " * line_size
  out.flush
end
end(message="") click to toggle source
# File lib/rbsync.rb, line 527
def end(message="")
  progress(100)
  out.print " " + message
  out.puts ""
  out.flush
end
progress(percent,message=nil) click to toggle source
# File lib/rbsync.rb, line 539
def progress(percent,message=nil)
  clear()
  str =""
  str <<  "\r"
  str <<  bar_char_done   * ((percent.to_f/100.to_f)*size).to_i
  str <<  bar_char_undone * (size - ((percent.to_f/100.to_f)*size).to_i)
  str <<  " " + percent.to_s + "%" if show_percent
  str <<  " " + message  if message
  @printend_max_size = str.size if str.size > @printend_max_size
  out.print str
  out.flush
end
start(message="") click to toggle source
# File lib/rbsync.rb, line 522
def start(message="")
  out.puts message
  out.print bar_char_undone * size 
  out.flush
end