Class: Pv

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/pv.rb

Defined Under Namespace

Classes: PvAwareStdout

Instance Method Summary collapse

Constructor Details

#initialize(enum) ⇒ Pv

Returns a new instance of Pv.



6
7
8
# File 'lib/pv.rb', line 6

def initialize(enum)
  @enum = enum
end

Instance Method Details

#eachObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/pv.rb', line 10

def each
  return to_enum unless block_given?
  # TODO: don't display progress unless $stdout.tty?

  self.progress = 0

  hijack_stdout

  display_progress

  @enum.each do |item|
    val = yield item
    self.progress += 1
    display_progress
    val
  end
ensure
  # Run on ensure block to raised StopIterations don't mess up the display.
  clear_progress
  restore_stdout
end