class Athena::Console::Style::Athena
inherits Athena::Console::Style::Output
#
Default implementation of ACON::Style::Interface
that provides a slew of helpful methods for formatting output.
Uses ACON::Helper::AthenaQuestion
to improve the appearance of questions.
protected def execute(input : ACON::Input::Interface, output : ACON::Output::Interface) : ACON::Command::Status
style = ACON::Style::Athena.new input, output
style.title "Some Fancy Title"
# ...
ACON::Command::Status::SUCCESS
end
Constructors#
Methods#
#ask(question : String, default : _)
#
Helper method for asking ACON::Question
questions.
#ask_hidden(question : String)
#
Helper method for asking hidden ACON::Question
questions.
#block(messages : String | Enumerable(String), type : String | Nil = nil, style : String | Nil = nil, prefix : String = " ", padding : Bool = false, escape : Bool = true) : Nil
#
Helper method for outputting blocks of messages that powers the #caution
, #success
, #note
, etc. methods.
It includes various optional parameters that can be used to print customized blocks.
If type is provided, its value will be printed within []
. E.g. [TYPE]
.
If style is provided, each of the messages will be printed in that style.
prefix represents what each of the messages should be prefixed with.
If padding is true
, empty lines will be added before/after the block.
If escape is true
, each of the messages will be escaped via ACON::Formatter::Output.escape
.
#caution(messages : String | Enumerable(String)) : Nil
#
:inherit:
!
! [CAUTION] Some Message
!
White text on a 3 line red background block with an empty line above/below the block.
#choice(question : String, choices : Indexable | Hash, default = nil)
#
Helper method for asking ACON::Question::Choice
questions.
#comment(messages : String | Enumerable(String)) : Nil
#
:inherit:
// Some Message
White text with one empty line above/below the message(s).
#confirm(question : String, default : Bool = true) : Bool
#
Helper method for asking ACON::Question::Confirmation
questions.
#create_progress_bar(max : Int32 | Nil = nil) : ACON::Helper::ProgressBar
#
Creates and returns an ACON::Helper::ProgressBar
, optionally with the provided max amount of steps.
#create_table : ACON::Helper::Table
#
Creates and returns an Athena styled ACON::Helper::Table
instance.
#definition_list(*rows : String | ACON::Helper::Table::Separator | Enumerable(Tuple(K, V))) : Nil forall K, V
#
Formats a list of key/value pairs horizontally.
Todo
Mappable
when/if https://github.com/crystal-lang/crystal/issues/10886 is implemented.
#error(messages : String | Enumerable(String)) : Nil
#
:inherit:
[ERROR] Some Message
White text on a 3 line red background block with an empty line above/below the block.
#horizontal_table(headers : Enumerable, rows : Enumerable) : Nil
#
Sames as #table
, but horizontal
#info(messages : String | Enumerable(String)) : Nil
#
:inherit:
[INFO] Some Message
Green text with two empty lines above/below the message(s).
#listing(elements : Enumerable) : Nil
#
Formats and prints a bulleted list containing the provided elements.
* Item 1
* Item 2
* Item 3
White text with one empty line above/below the list.
#listing(*elements : String) : Nil
#
:inherit:
* Item 1
* Item 2
* Item 3
White text with one empty line above/below the list.
#note(messages : String | Enumerable(String)) : Nil
#
:inherit:
! [NOTE] Some Message
Green text with one empty line above/below the message(s).
#print(messages : String | Enumerable(String), verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil
#
:inherit:
#progress_advance(by step : Int32 = 1) : Nil
#
Advances the internal ACON::Helper::ProgressBar
by the provided amount of steps.
#progress_iterate(enumerable : Enumerable(T), max : Int32 | Nil = nil, & : T -> Nil) : Nil forall T
#
#progress_start(max : Int32 | Nil = nil) : Nil
#
Starts an internal ACON::Helper::ProgressBar
, optionally with the provided max amount of steps.
#puts(messages : String | Enumerable(String), verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil
#
:inherit:
#section(message : String) : Nil
#
Creates a section header with the provided message.
Some Message
------------
Orange text with one empty line above/below the section.
#success(messages : String | Enumerable(String)) : Nil
#
:inherit:
[OK] Some Message
Black text on a 3 line green background block with an empty line above/below the block.
#table(headers : Enumerable, rows : Enumerable) : Nil
#
Formats and prints a table based on the provided headers and rows, followed by a new line.
----- -------
Foo Bar
----- -------
Biz Baz
12 false
----- -------
#text(messages : String | Enumerable(String)) : Nil
#
:inherit:
Same as #puts
but indented one space and an empty line above the message(s).
#title(message : String) : Nil
#
Formats and prints message as a title.
Some Message
============
Orange text with one empty line above/below the title.
#vertical_table(headers : Enumerable, rows : Enumerable) : Nil
#
Sames as #table
, but vertical
#warning(messages : String | Enumerable(String)) : Nil
#
:inherit:
[WARNING] Some Message
Black text on a 3 line orange background block with an empty line above/below the block.