aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Youri/Check/Output/Mail/Format/Text.pm
blob: f08e8407758ad0714d09fc61143d60b40819d55d (plain)
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
# $Id: Mail.pm 580 2006-01-11 22:59:36Z guillomovitch $
package Youri::Check::Output::Mail::Format::Text;

=head1 NAME

Youri::Check::Output::Mail::Format::Text - Mail text format support

=head1 DESCRIPTION

This format plugin for L<Youri::Check::Output::Mail> provides text format
support.

=cut

use warnings;
use strict;
use Carp;
use base 'Youri::Check::Output::Mail::Format';

sub type {
    return 'text/plain';
}

sub get_report {
    my ($self, $time, $title, $iterator, $type, $columns, $links, $maintainer) = @_;

    my $content;
    my $lead_columns = [ 
        $maintainer ?
            qw/package media/ :
            qw/package media maintainer/
        ];
    my @results;
    $content .= join("\t", @$lead_columns, @$columns) . "\n";
    while (my $result = $iterator->get_result()) {
        if (@results && $result->{package} ne $results[0]->{package}) {
            $content .= $self->_get_formated_results(
                $lead_columns,
                $columns,
                \@results
            );
            @results = ();
        }
        push(@results, $result);
    }

    $content .= $self->_get_formated_results(
        $lead_columns,
        $columns,
        \@results
    );

    return \$content;
}

sub _get_formated_results {
    my ($self, $lead_columns, $columns, $results) = @_;

    my $content;
    $content .= join(
        "\t",
        (map { $results->[0]->{$_} || '' } @$lead_columns),
        (map { $results->[0]->{$_} || '' } @$columns)
    ) . "\n";
    for my $i (1 .. $#$results) {
        $content .= join(
            "\t",
            (map { '' } @$lead_columns),
            (map { $results->[$i]->{$_} || '' } @$columns)
        ) . "\n";
    }
    return $content;
}

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2002-2006, YOURI project

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

=cut

1;