PHP 8.2.31
Preview: Progress.pm Size: 2.36 KB
/proc/thread-self/root/usr/share/perl5/vendor_perl/Pod/Simple/Progress.pm

require 5;
package Pod::Simple::Progress;
$VERSION = '3.35';
use strict;

# Objects of this class are used for noting progress of an
#  operation every so often.  Messages delivered more often than that
#  are suppressed.
#
# There's actually nothing in here that's specific to Pod processing;
#  but it's ad-hoc enough that I'm not willing to give it a name that
#  implies that it's generally useful, like "IO::Progress" or something.
#
# -- sburke
#
#--------------------------------------------------------------------------

sub new {
  my($class,$delay) = @_;
  my $self = bless {'quiet_until' => 1},  ref($class) || $class;
  $self->to(*STDOUT{IO});
  $self->delay(defined($delay) ? $delay : 5);
  return $self;
}

sub copy { 
  my $orig = shift;
  bless {%$orig, 'quiet_until' => 1}, ref($orig);
}
#--------------------------------------------------------------------------

sub reach {
  my($self, $point, $note) = @_;
  if( (my $now = time) >= $self->{'quiet_until'}) {
    my $goal;
    my    $to = $self->{'to'};
    print $to join('',
      ($self->{'quiet_until'} == 1) ? () : '... ',
      (defined $point) ? (
        '#',
        ($goal = $self->{'goal'}) ? (
          ' ' x (length($goal) - length($point)),
          $point, '/', $goal,
        ) : $point,
        $note ? ': ' : (),
      ) : (),
      $note || '',
      "\n"
    );
    $self->{'quiet_until'} = $now + $self->{'delay'};
  }
  return $self;
}

#--------------------------------------------------------------------------

sub done {
  my($self, $note) = @_;
  $self->{'quiet_until'} = 1;
  return $self->reach( undef, $note );
}

#--------------------------------------------------------------------------
# Simple accessors:

sub delay {
  return $_[0]{'delay'} if @_ == 1; $_[0]{'delay'} = $_[1]; return $_[0] }
sub goal {
  return $_[0]{'goal' } if @_ == 1; $_[0]{'goal' } = $_[1]; return $_[0] }
sub to   {
  return $_[0]{'to'   } if @_ == 1; $_[0]{'to'   } = $_[1]; return $_[0] }

#--------------------------------------------------------------------------

unless(caller) { # Simple self-test:
  my $p = __PACKAGE__->new->goal(5);
  $p->reach(1, "Primus!");
  sleep 1;
  $p->reach(2, "Secundus!");
  sleep 3;
  $p->reach(3, "Tertius!");
  sleep 5;
  $p->reach(4);
  $p->reach(5, "Quintus!");
  sleep 1;
  $p->done("All done");
}

#--------------------------------------------------------------------------
1;
__END__

Directory Contents

Dirs: 0 × Files: 28

Name Size Perms Modified Actions
70.90 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
5.21 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.52 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
3.94 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.45 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
33.80 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
39.20 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
2.69 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.24 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
3.49 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
2.36 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
25.13 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
2.82 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.05 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
3.28 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
3.91 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
21.96 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
34.29 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.52 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
32.51 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.98 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
2.46 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
2.69 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
736 B lrw-r--r-- 2016-11-29 23:14:16
Edit Download
2.63 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
715 B lrw-r--r-- 2016-11-29 23:14:16
Edit Download
25.78 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download
4.56 KB lrw-r--r-- 2016-11-29 23:14:16
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).