Help language development. Donate to The Perl Foundation

Terminal::Spinners cpan:RYNIX last updated on 2018-08-05

Terminal-Spinners-1.1.0/

Terminal::Spinners

Simple spinners and progress bars for Perl 6.

Install

zef install Terminal::Spinners

Usage

Classic Spinner |/-\

my $spinner = Spinner.new;                        # a new default (classic) spinner 
my $promise = Promise.start: { sleep 2; 40 + 2 }; # promise of your long running process  
my $result  = $spinner.await: $promise;           # await returns the promise result

-or-

my $classic = Spinner.new;   # a new default (classic) spinner 
my $promise = start sleep 2; # promise of your long running process
until $promise.status {
    $classic.next;           # prints the next spinner frame
}

Hash Progress Bar [##########..........]50.00%

my $hash-bar = Bar.new;            # defaults to the hash progress bar
$hash-bar.show: 0;                 # print a 0% progress bar
for 1 .. 3000 {
    my $percent = $_ / 3000 * 100; # calculate a percentage
    sleep 0.0002;                  # do iterative work here
    $hash-bar.show: $percent;      # print the progress bar and percent
}

More options

For spinners you can set the speed:

my $spinner = Spinner.new: speed => 0; # speed in seconds
# defaults to 0.08. this provides smooth animation for use as in the example above.
# 0 seconds can be useful if you want to print the next frame each time an action occurs.
``` 
And change the type of spinner:
```perl
my $spinner = Spinner.new: type => 'bounce';

Choose from these types:

classic     | / - \
bounce      [=   ] [==  ] [=== ] [ ===] [  ==] [   =] [    ] [   =] [  ==] [ ===] [====] [=== ] [==  ] [=   ] [    ]
bounce2     ( ●    ) (  ●   ) (   ●  ) (    ● ) (     ●) (    ● ) (   ●  ) (  ●   ) ( ●    ) (●     )
dots        ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
dots2       ⢄ ⢂ ⢁ ⡁ ⡈ ⡐ ⡠
dots3       ⠈ ⠐ ⠠ ⢀ ⡀ ⠄ ⠂ ⠁
three-dots  .  .. ...
three-dots2 .  .. ... ..  .
bar         ▁  ▃  ▄  ▅  ▆  ▇  ▆  ▅  ▄  ▃  ▁
bar2        ▏  ▎  ▍  ▌  ▊  ▉  ▊  ▋  ▌  ▍  ▎

For bars you can change the length:

my $bar = Bar.new: length => 50;

And you can change the type:

my $bar = Bar.new: type => 'equals';

Choose from these types:

hash   [##########..........]50.00%
equals [==========          ]50.00%

Copyright (c) 2018, github:ryn1x

License

Terminal::Spinners is released under the Artistic License 2.0.