Class: Rich::Status

Inherits:
Object
  • Object
show all
Defined in:
lib/rich/layout.rb

Overview

Status display with spinner

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = "", console: nil, spinner: nil) ⇒ Status

Returns a new instance of Status.



268
269
270
271
272
273
# File 'lib/rich/layout.rb', line 268

def initialize(message = "", console: nil, spinner: nil)
  @message = message
  @console = console || Console.new
  @spinner = spinner || Spinner.new
  @started = false
end

Instance Attribute Details

#consoleConsole (readonly)

Returns Console.

Returns:



266
267
268
# File 'lib/rich/layout.rb', line 266

def console
  @console
end

#messageString

Returns Status message.

Returns:

  • (String)

    Status message



263
264
265
# File 'lib/rich/layout.rb', line 263

def message
  @message
end

#spinnerSpinner (readonly)

Returns Spinner animation.

Returns:



260
261
262
# File 'lib/rich/layout.rb', line 260

def spinner
  @spinner
end

Instance Method Details

#refreshObject

Refresh display



307
308
309
310
311
312
# File 'lib/rich/layout.rb', line 307

def refresh
  return unless @started

  @spinner.update
  @console.write("\r\e[K#{@spinner.frame} #{@message}")
end

#start { ... } ⇒ Object

Start status display

Yields:

  • Block to execute



277
278
279
280
281
282
283
284
285
286
287
288
# File 'lib/rich/layout.rb', line 277

def start
  @started = true
  @console.hide_cursor

  if block_given?
    begin
      yield self
    ensure
      stop
    end
  end
end

#stopObject

Stop status display



291
292
293
294
295
296
297
# File 'lib/rich/layout.rb', line 291

def stop
  return unless @started

  @console.write("\r\e[K")
  @console.show_cursor
  @started = false
end

#update(new_message) ⇒ Object

Update message

Parameters:

  • new_message (String)

    New message



301
302
303
304
# File 'lib/rich/layout.rb', line 301

def update(new_message)
  @message = new_message
  refresh
end