Class: Infobar

Inherits:
Object show all
Extended by:
Tins::Delegate
Includes:
ComplexConfig::Provider::Shortcuts, FancyInterface, InputOutput, Tins::SexySingleton
Defined in:
lib/infobar.rb,
lib/infobar.rb,
lib/infobar/version.rb

Defined Under Namespace

Modules: FancyInterface, InputOutput Classes: Counter, Display, Duration, FIFO, Frequency, Message, Number, Rate, Spinner, Timer, Trend

Constant Summary collapse

VERSION =

Infobar version

'0.0.5'
VERSION_ARRAY =

:nodoc:

VERSION.split('.').map(&:to_i)
VERSION_MAJOR =

:nodoc:

VERSION_ARRAY[0]
VERSION_MINOR =

:nodoc:

VERSION_ARRAY[1]
VERSION_BUILD =

:nodoc:

VERSION_ARRAY[2]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from FancyInterface

#+, #+@, #<<, #add, #coerce, #~

Methods included from InputOutput

#clear, #newline

Constructor Details

#initializeInfobar



24
25
26
27
28
# File 'lib/infobar.rb', line 24

def initialize
  @counter = Infobar::Counter.new
  @display = Infobar::Display.new
  reset
end

Instance Attribute Details

#counterObject (readonly)

Returns the value of attribute counter.



36
37
38
# File 'lib/infobar.rb', line 36

def counter
  @counter
end

#displayObject (readonly)

Returns the value of attribute display.



38
39
40
# File 'lib/infobar.rb', line 38

def display
  @display
end

#labelObject

Returns the value of attribute label.



40
41
42
# File 'lib/infobar.rb', line 40

def label
  @label
end

#messageObject (readonly)

Returns the value of attribute message.



34
35
36
# File 'lib/infobar.rb', line 34

def message
  @message
end

Class Method Details

.displayObject



30
31
32
# File 'lib/infobar.rb', line 30

def self.display
  Infobar.instance.display
end

Instance Method Details

#call(total:, current: 0, label: cc.infobar?&.label || 'Infobar', message: cc.infobar?&.message?&.to_h, show: cc.infobar?&.show?, style: cc.infobar?&.style?&.to_h, frequency: cc.infobar?&.frequency?, update: false, finish: nil) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/infobar.rb', line 54

def call(
  total:,
  current:   0,
  label:     cc.infobar?&.label || 'Infobar',
  message:   cc.infobar?&.message?&.to_h,
  show:      cc.infobar?&.show?,
  style:     cc.infobar?&.style?&.to_h,
  frequency: cc.infobar?&.frequency?,
  update:    false,
  finish:    nil
)
  self.label = label
  counter.reset(total: total, current: current)
  @message = convert_to_message(message)
  show.nil? or self.show = show
  if update
    update(message: @message)
  else
    display.reset
  end
  frequency.nil? or display.frequency = frequency
  style.nil? or self.style = style
  self
end

#convert_to_message(message) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/infobar.rb', line 107

def convert_to_message(message)
  case message
  when Message
    message
  when Hash
    Message.new(message)
  when String
    Message.new format: message
  else
    @message
  end
end

#finish(message: nil) ⇒ Object



100
101
102
103
104
105
# File 'lib/infobar.rb', line 100

def finish(message: nil)
  counter.finish
  @message = convert_to_message(message)
  display.update(message: @message, force: true, progressed: counter.progressed)
  self
end

#progress(by: 1, message: nil, finish: true, force: false) ⇒ Object



92
93
94
95
96
97
98
# File 'lib/infobar.rb', line 92

def progress(by: 1, message: nil, finish: true, force: false)
  counter.progress(by: by)
  @message = convert_to_message(message)
  display.update(message: @message, force: force, progressed: counter.progressed)
  finish && counter.done? and finish(message: finish)
  self
end

#resetObject



79
80
81
82
83
84
# File 'lib/infobar.rb', line 79

def reset
  @message = convert_to_message('%l %c/%t in %te, ETA %e @%E %s')
  counter.reset(total: 0, current: 0)
  display.reset
  self
end

#update(message: nil) ⇒ Object



86
87
88
89
90
# File 'lib/infobar.rb', line 86

def update(message: nil)
  @message = convert_to_message(message)
  display.update(message: @message, progressed: counter.progressed)
  self
end