class Athena::Console::Style::Athena

Overview

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

Defined in:

style/athena.cr

Constructors

Instance Method Summary

Instance methods inherited from class Athena::Console::Style::Output

create_progress_bar(max : Int32 | Nil = nil) : ACON::Helper::ProgressBar create_progress_bar, decorated=(decorated : Bool) : Nil decorated=, decorated? : Bool decorated?, formatter : ACON::Formatter::Interface formatter, formatter=(formatter : ACON::Formatter::Interface) : Nil formatter=, new_line(count : Int32 = 1) : Nil new_line, print(message, verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil print, puts(message, verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil puts, verbosity : ACON::Output::Verbosity verbosity, verbosity=(verbosity : ACON::Output::Verbosity) : Nil verbosity=

Constructor methods inherited from class Athena::Console::Style::Output

new(output : ACON::Output::Interface) new

Instance methods inherited from module Athena::Console::Output::Interface

decorated=(decorated : Bool) : Nil decorated=, decorated? : Bool decorated?, formatter : ACON::Formatter::Interface formatter, formatter=(formatter : ACON::Formatter::Interface) : Nil formatter=, print(message : String | Enumerable(String), verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil print, puts(message : String | Enumerable(String), verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil puts, verbosity : ACON::Output::Verbosity verbosity, verbosity=(verbosity : ACON::Output::Verbosity) : Nil verbosity=

Instance methods inherited from module Athena::Console::Style::Interface

ask(question : String, default : _) ask, ask_hidden(question : String) ask_hidden, caution(messages : String | Enumerable(String)) : Nil caution, choice(question : String, choices : Indexable | Hash, default = nil) choice, comment(messages : String | Enumerable(String)) : Nil comment, confirm(question : String, default : Bool = true) : Bool confirm, error(messages : String | Enumerable(String)) : Nil error, info(messages : String | Enumerable(String)) : Nil info, listing(elements : Enumerable) : Nil listing, new_line(count : Int32 = 1) : Nil new_line, note(messages : String | Enumerable(String)) : Nil note, progress_advance(by step : Int32 = 1) : Nil progress_advance, progress_finish : Nil progress_finish, progress_start(max : Int32 | Nil = nil) : Nil progress_start, section(message : String) : Nil section, success(messages : String | Enumerable(String)) : Nil success, table(headers : Enumerable, rows : Enumerable) : Nil table, text(messages : String | Enumerable(String)) : Nil text, title(message : String) : Nil title, warning(messages : String | Enumerable(String)) : Nil warning

Constructor Detail

def self.new(input : ACON::Input::Interface, output : ACON::Output::Interface) #

[View source]

Instance Method Detail

def ask(question : String, default : _) #

Helper method for asking ACON::Question questions.


[View source]
def ask(question : ACON::Question::Base) #

:inherit:


[View source]
def ask_hidden(question : String) #

Helper method for asking hidden ACON::Question questions.


[View source]
def 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.


[View source]
def 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.


[View source]
def choice(question : String, choices : Indexable | Hash, default = nil) #

Helper method for asking ACON::Question::Choice questions.


[View source]
def comment(messages : String | Enumerable(String)) : Nil #

:inherit:

// Some Message

White text with one empty line above/below the message(s).


[View source]
def confirm(question : String, default : Bool = true) : Bool #

Helper method for asking ACON::Question::Confirmation questions.


[View source]
def create_progress_bar(max : Int32 | Nil = nil) : ACON::Helper::ProgressBar #
Description copied from class Athena::Console::Style::Output

Creates and returns an ACON::Helper::ProgressBar, optionally with the provided max amount of steps.


[View source]
def create_table : ACON::Helper::Table #

Creates and returns an Athena styled ACON::Helper::Table instance.


[View source]
def 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.


[View source]
def 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.


[View source]
def error_style : self #

Returns a new instance of self that outputs to the error output.


[View source]
def horizontal_table(headers : Enumerable, rows : Enumerable) : Nil #

Sames as #table, but horizontal


[View source]
def info(messages : String | Enumerable(String)) : Nil #

:inherit:

[INFO] Some Message

Green text with two empty lines above/below the message(s).


[View source]
def 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.


[View source]
def listing(*elements : String) : Nil #

:inherit:

* Item 1
* Item 2
* Item 3

White text with one empty line above/below the list.


[View source]
def new_line(count : Int32 = 1) : Nil #

:inherit:


[View source]
def note(messages : String | Enumerable(String)) : Nil #

:inherit:

! [NOTE] Some Message

Green text with one empty line above/below the message(s).


[View source]
def print(messages : String | Enumerable(String), verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil #

:inherit:


[View source]
def progress_advance(by step : Int32 = 1) : Nil #

Advances the internal ACON::Helper::ProgressBar by the provided amount of steps.


[View source]
def progress_finish : Nil #

Completes the internal ACON::Helper::ProgressBar.


[View source]
def progress_iterate(enumerable : Enumerable(T), max : Int32 | Nil = nil, & : T -> Nil) : Nil forall T #

[View source]
def progress_start(max : Int32 | Nil = nil) : Nil #

Starts an internal ACON::Helper::ProgressBar, optionally with the provided max amount of steps.


[View source]
def puts(messages : String | Enumerable(String), verbosity : ACON::Output::Verbosity = :normal, output_type : ACON::Output::Type = :normal) : Nil #

:inherit:


[View source]
def section(message : String) : Nil #

Creates a section header with the provided message.

Some Message
------------

Orange text with one empty line above/below the section.


[View source]
def 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.


[View source]
def 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
----- -------

[View source]
def text(messages : String | Enumerable(String)) : Nil #

:inherit:

Same as #puts but indented one space and an empty line above the message(s).


[View source]
def title(message : String) : Nil #

Formats and prints message as a title.

Some Message
============

Orange text with one empty line above/below the title.


[View source]
def vertical_table(headers : Enumerable, rows : Enumerable) : Nil #

Sames as #table, but vertical


[View source]
def 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.


[View source]