Module: Toys::StandardMixins::Terminal
- Includes:
- Mixin
- Defined in:
- lib/toys/standard_mixins/terminal.rb
Overview
A mixin that provides a simple terminal. It includes a set of methods that produce styled output, get user input, and otherwise interact with the user's terminal. This mixin is not as richly featured as other mixins such as Highline, but it has no gem dependencies so is ideal for basic cases.
You may make these methods available to your tool by including the following directive in your tool configuration:
include :terminal
A Terminal object will then be available by calling the #terminal method. For information on using this object, see the documentation for Utils::Terminal. Some of the most useful methods are also mixed into the tool and can be called directly.
You can configure the Terminal object by passing options to the include
directive. For example:
include :terminal, styled: true
The arguments will be passed on to Utils::Terminal#initialize.
Constant Summary collapse
- KEY =
Context key for the terminal object.
::Object.new.freeze
Instance Method Summary collapse
-
#ask(prompt, *styles, default: nil, trailing_text: :default) ⇒ String
Ask a question and get a response.
-
#confirm(prompt = "Proceed?", *styles, default: nil) ⇒ Boolean
Confirm with the user.
-
#puts(str = "", *styles) ⇒ self
(also: #say)
Write a line, appending a newline if one is not already present.
-
#spinner(leading_text: "", final_text: "", frame_length: nil, frames: nil, style: nil, &block) ⇒ Object
Display a spinner during a task.
-
#terminal ⇒ Toys::Utils::Terminal
A tool-wide terminal instance.
-
#write(str = "", *styles) ⇒ self
Write a partial line without appending a newline.
Methods included from Mixin
Instance Method Details
#ask(prompt, *styles, default: nil, trailing_text: :default) ⇒ String
Ask a question and get a response.
96 97 98 |
# File 'lib/toys/standard_mixins/terminal.rb', line 96 def ask(prompt, *styles, default: nil, trailing_text: :default) terminal.ask(prompt, *styles, default: default, trailing_text: trailing_text) end |
#confirm(prompt = "Proceed?", *styles, default: nil) ⇒ Boolean
Confirm with the user.
112 113 114 |
# File 'lib/toys/standard_mixins/terminal.rb', line 112 def confirm(prompt = "Proceed?", *styles, default: nil) terminal.confirm(prompt, *styles, default: default) end |
#puts(str = "", *styles) ⇒ self Also known as: say
Write a line, appending a newline if one is not already present.
61 62 63 64 |
# File 'lib/toys/standard_mixins/terminal.rb', line 61 def puts(str = "", *styles) terminal.puts(str, *styles) self end |
#spinner(leading_text: "", final_text: "", frame_length: nil, frames: nil, style: nil, &block) ⇒ Object
Display a spinner during a task. You should provide a block that performs the long-running task. While the block is executing, a spinner will be displayed.
136 137 138 139 140 141 |
# File 'lib/toys/standard_mixins/terminal.rb', line 136 def spinner(leading_text: "", final_text: "", frame_length: nil, frames: nil, style: nil, &block) terminal.spinner(leading_text: leading_text, final_text: final_text, frame_length: frame_length, frames: frames, style: style, &block) end |
#terminal ⇒ Toys::Utils::Terminal
A tool-wide terminal instance
47 48 49 |
# File 'lib/toys/standard_mixins/terminal.rb', line 47 def terminal self[KEY] end |
#write(str = "", *styles) ⇒ self
Write a partial line without appending a newline.
77 78 79 80 |
# File 'lib/toys/standard_mixins/terminal.rb', line 77 def write(str = "", *styles) terminal.write(str, *styles) self end |