Spinning rod animation/Text: Difference between revisions
Content added Content deleted
Childishbeat (talk | contribs) m (A GlovePIE section has been added.) |
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Add a Perl 6 example) |
||
Line 104: | Line 104: | ||
EndWhile</lang> |
EndWhile</lang> |
||
=={{header|Perl 6}}== |
|||
{{works with|Rakudo|2018.05}} |
|||
Traditionally this is know as a [[wp:throbber|throbber]] or progress indicator. |
|||
This will accept an array of elements to use as its throbber frames, and optionally a delay before it returns the next element. |
|||
<lang perl6>class throbber { |
|||
has @.members; |
|||
has $.delay is rw = 0; |
|||
has $!index = 0; |
|||
method next { |
|||
$!index = ($!index + 1) % +@.members; |
|||
sleep $.delay if $.delay; |
|||
"\b" ~ @.members[$!index]; |
|||
} |
|||
} |
|||
my $rod = throbber.new( :members(< | / - \ >), :delay(.25) ); |
|||
print "\e[?25lLong running process... "; |
|||
print $rod.next for ^20; |
|||
my $clock = throbber.new( :members("🕐" .. "🕛") ); |
|||
print "\b \nSomething else with a delay... "; |
|||
until my $done { |
|||
# do something in a loop; |
|||
sleep 1/12; # simulate processing delay |
|||
print $clock.next; |
|||
$done = True if $++ >= 60; |
|||
} |
|||
END { print "\b \e[?25h\n" } # clean up on exit</lang> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |