aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Youri/Check/Output/File/Format/Text.pm
blob: bdbadde1e3f2646a6c98a073cde537b96316b753 (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
84
85
86
87
88
# $Id$
package Youri::Check::Output::File::Format::Text;

=head1 NAME

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

=head1 DESCRIPTION

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

=cut

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

sub extension {
    return 'txt';
}

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

    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
    );

    $content .= "\n";
    $content .= "Page generated $time\n";

    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;