Class: Lapidarius::Spinner

Inherits:
Object
  • Object
show all
Defined in:
lib/lapidarius/cli.rb

Constant Summary collapse

CHARS =
%w[| / - \\]

Instance Method Summary collapse

Constructor Details

#initialize(io = STDOUT, fps = 15, delay = 1.0) ⇒ Spinner

Returns a new instance of Spinner.



68
69
70
71
72
73
# File 'lib/lapidarius/cli.rb', line 68

def initialize(io = STDOUT, fps = 15, delay = 1.0)
  @io = io
  @fps = fps.to_i
  @delay = delay.to_f / @fps
  @iter = 0
end

Instance Method Details

#callObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/lapidarius/cli.rb', line 75

def call
  spinner = Thread.new do
    while @iter do
      @io.print CHARS[(@iter+=1) % CHARS.length]
      sleep @delay
      @io.print "\b"
      @io.flush
    end
  end
ensure
  yield.tap do
    @iter = false
    spinner.join
  end
end