Class: Clack::Prompts::Spinner
- Inherits:
-
Object
- Object
- Clack::Prompts::Spinner
- Defined in:
- lib/clack/prompts/spinner.rb
Overview
Instance Method Summary collapse
-
#cancel(message = nil) ⇒ Object
Stop with cancelled state.
- #cancelled? ⇒ Boolean
-
#clear ⇒ Object
Clear the spinner without showing a final message.
-
#error(message = nil) ⇒ Object
Stop with error state.
-
#initialize(indicator: :dots, frames: nil, delay: nil, style_frame: nil, output: $stdout) ⇒ Spinner
constructor
A new instance of Spinner.
-
#message(msg) ⇒ Object
Update the spinner message while running.
-
#start(message = nil) ⇒ self
Start the spinner animation.
-
#stop(message = nil) ⇒ Object
Stop with success state.
Constructor Details
#initialize(indicator: :dots, frames: nil, delay: nil, style_frame: nil, output: $stdout) ⇒ Spinner
Returns a new instance of Spinner.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/clack/prompts/spinner.rb', line 40 def initialize( indicator: :dots, frames: nil, delay: nil, style_frame: nil, output: $stdout ) @output = output @indicator = indicator @frames = frames || Symbols::SPINNER_FRAMES @delay = delay || Symbols::SPINNER_DELAY @style_frame = style_frame || ->(frame) { Colors.magenta(frame) } @state = :idle @message = "" @thread = nil @frame_idx = 0 @prev_frame = nil @start_time = nil @mutex = Mutex.new end |
Instance Method Details
#cancel(message = nil) ⇒ Object
Stop with cancelled state.
100 101 102 |
# File 'lib/clack/prompts/spinner.rb', line 100 def cancel( = nil) finish(:cancelled, ) end |
#cancelled? ⇒ Boolean
123 |
# File 'lib/clack/prompts/spinner.rb', line 123 def cancelled? = @mutex.synchronize { @state == :cancelled } |
#clear ⇒ Object
Clear the spinner without showing a final message.
113 114 115 116 117 118 119 120 121 |
# File 'lib/clack/prompts/spinner.rb', line 113 def clear @mutex.synchronize do @state = :idle end @thread&.join restore_cursor @output.print Core::Cursor.clear_down @output.print Core::Cursor.show end |
#error(message = nil) ⇒ Object
Stop with error state.
93 94 95 |
# File 'lib/clack/prompts/spinner.rb', line 93 def error( = nil) finish(:error, ) end |
#message(msg) ⇒ Object
Update the spinner message while running.
107 108 109 110 |
# File 'lib/clack/prompts/spinner.rb', line 107 def (msg) @mutex.synchronize { @message = remove_trailing_dots(msg) } self end |
#start(message = nil) ⇒ self
Start the spinner animation.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/clack/prompts/spinner.rb', line 65 def start( = nil) @mutex.synchronize do return unless @state == :idle @message = remove_trailing_dots( || "") @state = :running @prev_frame = nil @frame_idx = 0 @start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) end @output.print Core::Cursor.hide @output.print "#{Colors.gray(Symbols::S_BAR)}\n" @thread = Thread.new { spin_loop } self end |
#stop(message = nil) ⇒ Object
Stop with success state.
86 87 88 |
# File 'lib/clack/prompts/spinner.rb', line 86 def stop( = nil) finish(:success, ) end |