File: Printers.pm

package info (click to toggle)
libdata-dump-streamer-perl 2.08-40-2
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 408 kB
  • ctags: 101
  • sloc: perl: 2,669; makefile: 51
file content (58 lines) | stat: -rwxr-xr-x 1,279 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
{
    package Data::Dump::Streamer::_::StringPrinter;
    #$Id: Printers.pm 26 2006-04-16 15:18:52Z demerphq $#
    $VERSION= "0.1";
    my %items;
    sub DESTROY { delete $items{$_[0]} }

    sub new {
        my $class = shift;
        my $self = bless \do { my $str = '' }, $class;
        $self->print(@_);
        return $self;
    }

    sub print {
        my $self = shift;
        $items{$self} .= join "", @_;
    }
    sub value  { $items{$_[0]} }
    sub string { $_[0]->value() }
    1;
}

{

    package Data::Dump::Streamer::_::ListPrinter;
    $VERSION= "0.1";
    my %items;
    sub DESTROY { delete $items{$_[0]} }

    sub new {
        my $class = shift;
        my $self = bless \do { my $str = '' }, $class;
        $items{$self} = [];
        $self->print(@_);
        return $self;
    }

    sub print {
        my $self = $items{shift (@_)};
        my $str = join ( '', @_ );
        if (   !@$self
            or $self->[-1] =~ /\n/
            or length( $self->[-1] ) > 4000 )
        {
            push @{$self}, $str;
        } else {
            $self->[-1] .= $str;
        }
    }
    sub value { @{$items{$_[0]}} }
    sub string { join ( '', @{$items{$_[0]}} ) }
    1;
}


__END__