class ZTK::Spinner
Spinner
Class
This class can be used to display an “activity indicator” to a user while a task is executed in the supplied block. This indicator takes the form of a spinner.
@author Zachary Patten <zpatten AT jovelabs DOT io>
Constants
- CHARSET
Spinner
Character Set
Public Class Methods
spin(options={}) { || ... }
click to toggle source
Displays a “spinner” while executing the supplied block. It is advisable that no output is sent to the console during this time.
@param [Hash] options Configuration options hash. @option options [Float,Integer] :step (0.1) How long to sleep for in
between cycles, while cycling through the *CHARSET*.
@yield Block should execute the tasks for which they wish the user to
have a false sense of security in the fact that something is actually taking place "behind the scenes".
@return [Object] The return value of the block.
@author Zachary Patten <zpatten AT jovelabs DOT io> @author Stephen Nelson-Smith <stephen@atalanta-systems.com>
# File lib/ztk/spinner.rb, line 40 def spin(options={}, &block) options = Base.build_config({ :step => 0.1 }, options) !block_given? and Base.log_and_raise(options.ui.logger, SpinnerError, "You must supply a block!") count = 0 spinner = Thread.new do while (count >= 0) do options.ui.stdout.print(CHARSET[(count += 1) % CHARSET.length]) options.ui.stdout.print("\b") options.ui.stdout.respond_to?(:flush) and options.ui.stdout.flush sleep(options.step) end end yield.tap do count = -100 spinner.join end