Class: Gemlings::UI::Spinner

Inherits:
Object
  • Object
show all
Defined in:
lib/gemlings/ui.rb

Instance Method Summary collapse

Constructor Details

#initialize(message) ⇒ Spinner

Returns a new instance of Spinner.



87
88
89
90
91
# File 'lib/gemlings/ui.rb', line 87

def initialize(message)
  @message = message
  @running = false
  @frame = 0
end

Instance Method Details

#start ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/gemlings/ui.rb', line 93

def start
  @running = true
  @thread = Thread.new do
    while @running
      char = SPINNER_FRAMES[@frame % SPINNER_FRAMES.size]
      frame = Styles.spinner_style.render(char)
      $stderr.print "\r\e[K#{frame} #{@message}"
      @frame += 1
      sleep 0.08
    end
    $stderr.print "\r\e[K"
  end
end

#stop ⇒ Object



107
108
109
110
# File 'lib/gemlings/ui.rb', line 107

def stop
  @running = false
  @thread&.join
end