Module: Philiprehberger::Progress

Defined in:
lib/philiprehberger/progress.rb,
lib/philiprehberger/progress/bar.rb,
lib/philiprehberger/progress/multi.rb,
lib/philiprehberger/progress/spinner.rb,
lib/philiprehberger/progress/version.rb

Defined Under Namespace

Classes: Bar, Multi, Spinner

Constant Summary collapse

VERSION =
'0.5.0'

Class Method Summary collapse

Class Method Details

.bar(total:, width: 30, output: $stderr, fill: '=', empty: ' ', tip: '>') ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/philiprehberger/progress.rb', line 24

def self.bar(total:, width: 30, output: $stderr, fill: '=', empty: ' ', tip: '>')
  progress_bar = Bar.new(total: total, width: width, output: output, fill: fill, empty: empty, tip: tip)

  if block_given?
    result = yield progress_bar
    progress_bar.finish unless progress_bar.finished?
    result
  else
    progress_bar
  end
end

.each(enumerable, label: nil, output: $stderr) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/philiprehberger/progress.rb', line 58

def self.each(enumerable, label: nil, output: $stderr)
  items = enumerable.to_a
  bar = Bar.new(total: items.length, output: output)

  items.each do |item|
    yield item
    bar.advance
  end

  bar.finish
  items
end

.json_mode!Object



12
13
14
# File 'lib/philiprehberger/progress.rb', line 12

def self.json_mode!
  @json_mode = true
end

.json_mode?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/philiprehberger/progress.rb', line 20

def self.json_mode?
  @json_mode
end

.map(enumerable, label: nil, output: $stderr) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/philiprehberger/progress.rb', line 71

def self.map(enumerable, label: nil, output: $stderr)
  items = enumerable.to_a
  bar = Bar.new(total: items.length, output: output)

  results = items.map do |item|
    result = yield item
    bar.advance
    result
  end

  bar.finish
  results
end

.multi(output: $stderr) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/philiprehberger/progress.rb', line 48

def self.multi(output: $stderr)
  m = Multi.new(output: output)
  if block_given?
    yield m
    m
  else
    m
  end
end

.spin(message, output: $stderr) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/philiprehberger/progress.rb', line 36

def self.spin(message, output: $stderr)
  spinner = Spinner.new(message: message, output: output)

  if block_given?
    result = yield spinner
    spinner.stop unless spinner.stopped?
    result
  else
    spinner
  end
end

.text_mode!Object



16
17
18
# File 'lib/philiprehberger/progress.rb', line 16

def self.text_mode!
  @json_mode = false
end