Class: Rich::Status
- Inherits:
-
Object
- Object
- Rich::Status
- Defined in:
- lib/rich/layout.rb
Overview
Status display with spinner
Instance Attribute Summary collapse
-
#console ⇒ Console
readonly
Console.
-
#message ⇒ String
Status message.
-
#spinner ⇒ Spinner
readonly
Spinner animation.
Instance Method Summary collapse
-
#initialize(message = "", console: nil, spinner: nil) ⇒ Status
constructor
A new instance of Status.
-
#refresh ⇒ Object
Refresh display.
-
#start { ... } ⇒ Object
Start status display.
-
#stop ⇒ Object
Stop status display.
-
#update(new_message) ⇒ Object
Update message.
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( = "", console: nil, spinner: nil) @message = @console = console || Console.new @spinner = spinner || Spinner.new @started = false end |
Instance Attribute Details
#console ⇒ Console (readonly)
Returns Console.
266 267 268 |
# File 'lib/rich/layout.rb', line 266 def console @console end |
#message ⇒ String
Returns Status message.
263 264 265 |
# File 'lib/rich/layout.rb', line 263 def @message end |
#spinner ⇒ Spinner (readonly)
Returns Spinner animation.
260 261 262 |
# File 'lib/rich/layout.rb', line 260 def spinner @spinner end |
Instance Method Details
#refresh ⇒ Object
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
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 |
#stop ⇒ Object
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
301 302 303 304 |
# File 'lib/rich/layout.rb', line 301 def update() @message = refresh end |