# Terminal::Spinners Simple spinners and progress bars for Perl 6. ## Install ```bash zef install Terminal::Spinners ``` ## Usage Classic Spinner ```|/-\``` ```perl 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- ```perl 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%``` ```perl 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: ```perl 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: ```perl my $bar = Bar.new: length => 50; ``` And you can change the type: ```perl my $bar = Bar.new: type => 'equals'; ``` Choose from these types:
hash   [##########..........]50.00%
equals [==========          ]50.00%
## Adverbs ```:no-overwrite``` or ```:now```: Suppresses overwriting the previous bar/spinner. Works with ```next()```, ```await()```, and ```show()``` methods. Particularly useful on Windows where the formatting is not as expected when printing in combination with other text. ```:no-print``` or ```:nop```: Suppresses printing and also skips any animation delays. Works with the ```next()``` and ```show()``` methods, which also return the spinner-frame or progress-bar, respectively, as a string. ## Copyright Copyright (c) 2018, ryn1x ## License Terminal::Spinners is released under the Artistic License 2.0.