File: Progress.pm

package info (click to toggle)
libbadger-perl 0.16-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,400 kB
  • sloc: perl: 11,004; makefile: 9
file content (89 lines) | stat: -rw-r--r-- 3,210 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package Badger::Progress;

use Badger::Class
    version => 0.01,
    debug   => 0,
    base    => 'Badger::Base',
    config  => 'picture|class:PICTURE size';

our $PICTURE = <<'EOF';
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMmoNMMNmmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMs -NMN/:-yMMMNMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMy``/M/`` hMNMMMMMMMMMMMdo:-yMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMN `..``.sMMMMMMMMMMMMs.```sNs//::oddMMMMMMMMMMM
MMMMMMMMMMMMMM:````-mMMMMMMMMMMMh-```.dh.````````:yMMMMMMMMM
MMMMMMMMMMMMMM/```hMMMMMMMMMMMN+```` o: ```````````:sNMMMMMM
MMMMMMMMMMMMMM-`.mMMMMMMMMMMMN:``````````````````````-ymNMMM
MMMMMMMMMMMMMy .mMMMMMMMMMMMm-``````````````````````:+yyhmhh
MMMMMMMMMMMMy`:mMMMMMMMMMMMM+ ```````````.``-:osyhNMMMMMMMNd
MMMMMMMMMMMM``MMMMMMMMMMMMN+ `````````.+dNdMMMMMMMMMMMMMMMMM
MMMMMMMMMMMy yMMMMMMMMMMMN:`````````.oNMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMo`hMMMMMMMMMMN/````````.+NMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMM+-NMMMMMMMMMM/  ``````oMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMM//MMMMMMMMMm-`:.` ```:NMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMM/oMMMMMMMMd .y-//-`` yMMMMMMMMMMMMMMMMMMMMMNNmNNN
MMMMMMMMMMN:NMMMMMMMd.`-/:-:``.yMMMMMMMMMMMMMMMMMMMMNmmmmmmh
MMMMMMMMMMy-MMMMMMMd````````.oMMMMMMMMMMMMMMMMMMMNNmNmdyyys/
MMMMMMMMMMdmMMMMMMd.`````-+hMMMMMMMMMMMMMMNmdhhhddmmdhyys+/-
MMMMMMMMMNMMMMMMMM.` ` :mMMMMMMMMMMMMMmyo:::ssyyhyshyyyoo/:-
MMMMMMMNNmmmNMNMMN:````/MMMMMMMMMMNy+:.-..-/+oo/s+oooooo+::.
MMMMMMNmssoymNMN:``````-MMMMMMds:.``..--::-:/:+:oooo/+:/::-:
MMMMMNossos+smNNNMho/.`/MMNs:.````.`.-:----://:-/o///o:.-:-.
MMMMMh./::oooyhmMNNMMh.oN+```````````..--/+/:/o/s/+s:///+:.`
MMMMMN....:/++-+NMNNMNyNo```````````.-...-/:/-+/+/o//+/o:..`
MMMMMMNy/.:`.-`-hmNNNNMM/ `````````..-.--.--::ooo++/////..--
MMMMMMMMMMMNmmNNNMMMMMNm.```````````....--/::///++s+:-::/.--
MMMMMMMMMMMMMMMMMMNmMMNd:`````````````...///o/+o++sos+:s++:/
MMMMMMMMMMMMNMMMMMMMddNN-```````````.-.--:/++/++/sosos+o:/::
EOF

sub init {
    my ($self, $config) = @_;
    $self->configure($config);
    $self->debug("picture:\n$self->{ picture }\n") if DEBUG;
    $self->{ pixels } = [split(//, $self->{ picture })];
    $self->{ max    } = scalar(@{ $self->{ pixels } });
    $self->{ count  } = 0;
    $self->{ pixel  } = 0;
    return $self;
}

sub pixel {
    my $self   = shift;
    my $pixels = $self->{ pixels };
    if ($self->{ size }) {
        $self->{ count }++;
        my $end = int( $self->{ max } * $self->{ count } / $self->{ size } );
        if ($end > $self->{ pixel }) {
            my $start = $self->{ pixel };
            $self->{ pixel } = $end;
            return substr($self->{ picture }, $start, $end - $start);
        }
        else {
            return '';
        }
    }
    else {
        return $pixels->[ $self->{ count }++ % @$pixels ];
    }
}

sub remains {
    my $self   = shift;
    my $pixels = $self->{ pixels };
    if ($self->{ size }) {
        if (my $rest = $self->{ max } - $self->{ pixel }) {
            return substr($self->{ picture }, $self->{ pixel }, $rest);
        }
    }
    return '';
}

sub reset {
    my $self = shift;
    $self->{ count } = 0;
}

1;