You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by as...@apache.org on 2008/04/02 03:13:53 UTC

svn commit: r643673 - /incubator/buildr/trunk/lib/buildr/core/progressbar.rb

Author: assaf
Date: Tue Apr  1 18:13:50 2008
New Revision: 643673

URL: http://svn.apache.org/viewvc?rev=643673&view=rev
Log:
BUILDR-57 fixed to work on JRuby

Modified:
    incubator/buildr/trunk/lib/buildr/core/progressbar.rb

Modified: incubator/buildr/trunk/lib/buildr/core/progressbar.rb
URL: http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/core/progressbar.rb?rev=643673&r1=643672&r2=643673&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/core/progressbar.rb (original)
+++ incubator/buildr/trunk/lib/buildr/core/progressbar.rb Tue Apr  1 18:13:50 2008
@@ -22,15 +22,17 @@
       new(args).start &block
     end
 
+    def width
+      @width ||= $terminal.output_cols || 80
+    end
+
   end
 
   def initialize(args = {})
     @title = args[:title] || ''
     @total = args[:total] || 0
     @mark = args[:mark] || '.'
-    @format = args[:format] ||
-      @total == 0 ? ['%s %8s %s', :title, :count, :elapsed] : ['%s: %s |--| %8s/%s %s', :title, :percentage, :count, :total, :time]
-    @width = $terminal.output_cols - 1
+    @format = args[:format] || default_format
     @output = args[:output] || $stderr unless args[:hidden] || !$stdout.isatty
     clear
   end
@@ -64,7 +66,7 @@
   end
 
   def title
-    @title.size > @width / 5 ? (@title[0, @width / 5 - 2] + '..') : @title 
+    @title.size > ProgressBar.width / 5 ? (@title[0, ProgressBar.width / 5 - 2] + '..') : @title 
   end
 
   def count
@@ -125,7 +127,7 @@
 
   def clear
     return unless @output
-    @output.print "\r", " " * @width, "\r"
+    @output.print "\r", " " * (ProgressBar.width - 1), "\r"
     @output.flush
   end
     
@@ -133,7 +135,7 @@
     return unless @output
     format, *args = @format
     line = format % args.map { |arg| send(arg) }
-    @output.print line.sub('|--|') { progress(@width - line.size + 4) }
+    @output.print line.sub('|--|') { progress(ProgressBar.width - line.size + 3) }
     @output.print @finished ? "\n" : "\r"
     @output.flush
     @previous = @count
@@ -145,6 +147,10 @@
     return human(@count) != human(@previous) if @total == 0
     return true if (@count - @previous) >= @total / 100
     return Time.now - @last_time > 1
+  end
+
+  def default_format
+    @total == 0 ? ['%s %8s %s', :title, :count, :elapsed] : ['%s: %s |--| %8s/%s %s', :title, :percentage, :count, :total, :time]
   end
 
 end