Easy to use output control allowing redirection and buffering.
Add this to your application's shard.yml
:
dependencies:
console:
github: chris-huxtable/console.cr
require "console"
Console.print("This will print without a newline")
Console.line("This will print with a newline")
Console.line("This will", "print separate strings, with", "a newline", separator: ' ')
Console.words("This", "will", "print", "words", "or strings", "separated by single spaces", "and without a newline")
Console.print("All also feature", separator: "with different defaults", terminator: '.')
Console.item("This is a list label")
#=> " - This is a list label\n"
Console.item("This is a list label", "with extras", justify: 30)
#=> " - This is a list label with extras\n"
Console.item("This is a red list label", "with extras", justify: 30, style: Console::Style::Red)
#=> " - This is a red list label with extras\n"
Console.status("This is a list label")
#=> " - This is a list label\n"
Console.status("This is a list label", "with a status", justify: 30)
#=> " - This is a list label with a status\n"
Console.status("This is a red list label", "with a red status", justify: 30, style: Console::Style::Red)
#=> " - This is a list label with a red status\n"
buffer = Console.buffer() {
Console.line("This will be printed to the buffer")
Console.line("Which will return a string")
Console.repeat('=', 50)
Console.newline()
Console.line("You could then print it to the actual console if needed")
}
Console << buffer if something.went_wrong?
- 'Monkey patches'
IO::Memory.truncate
- Currently not
fork
or thread/fiber safe.
- Fork it (https://github.com/chris-huxtable/console.cr/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
- Chris Huxtable - creator, maintainer