Sha256: 3fd687ead8c450f6a6fa39f43943dde0c0898db6d6bb0f71ee967a6edecfd84d
Contents?: true
Size: 1.41 KB
Versions: 14
Compression:
Stored size: 1.41 KB
Contents
require 'cli/ui' module CLI module UI module Spinner autoload :Async, 'cli/ui/spinner/async' autoload :SpinGroup, 'cli/ui/spinner/spin_group' PERIOD = 0.1 # seconds TASK_FAILED = :task_failed begin runes = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] colors = [CLI::UI::Color::CYAN.code] * 5 + [CLI::UI::Color::MAGENTA.code] * 5 raise unless runes.size == colors.size GLYPHS = colors.zip(runes).map(&:join) end # Adds a single spinner # Uses an interactive session to allow the user to pick an answer # Can use arrows, y/n, numbers (1/2), and vim bindings to control # # https://user-images.githubusercontent.com/3074765/33798295-d94fd822-dce3-11e7-819b-43e5502d490e.gif # # ==== Attributes # # * +title+ - Title of the spinner to use # # ==== Options # # * +:auto_debrief+ - Automatically debrief exceptions? Default to true # # ==== Block # # * *spinner+ - Instance of the spinner. Can call +update_title+ to update the user of changes # # ==== Example Usage: # # CLI::UI::Spinner.spin('Title') { sleep 1.0 } # def self.spin(title, auto_debrief: true, &block) sg = SpinGroup.new(auto_debrief: auto_debrief) sg.add(title, &block) sg.wait end end end end
Version data entries
14 entries across 14 versions & 2 rubygems