File Coverage

blib/lib/Email/Folder.pm
Criterion Covered Total %
statement 38 39 97.4
branch 3 6 50.0
condition 2 5 40.0
subroutine 10 10 100.0
pod 5 5 100.0
total 58 65 89.2


line stmt bran cond sub pod time code
1 3     3   2043 use strict;
  3         4  
  3         104  
2 3     3   13 use warnings;
  3         4  
  3         193  
3             package Email::Folder;
4             {
5             $Email::Folder::VERSION = '0.860';
6             }
7             # ABSTRACT: read all the messages from a folder as Email::Simple objects
8              
9 3     3   11 use Carp;
  3         4  
  3         211  
10 3     3   1508 use Email::Simple;
  3         12979  
  3         96  
11 3     3   1254 use Email::FolderType 0.6 qw/folder_type/;
  3         29699  
  3         927  
12              
13              
14             sub new {
15 11     11 1 8496 my $class = shift;
16 11   33     44 my $folder = shift || carp "Must provide a folder name\n";
17 11         31 my %self = @_;
18              
19 11         16 my $reader;
20              
21 11 50       29 if ($self{reader}) {
22 0         0 $reader = $self{reader};
23             } else {
24 11         39 $reader = "Email::Folder::".folder_type($folder);
25             }
26 11 50       28451 eval "require $reader" or die $@;
27              
28 11         72 $self{_folder} = $reader->new($folder, @_);
29              
30 11         69 return bless \%self, $class;
31             }
32              
33              
34             sub messages {
35 9     9 1 19 my $self = shift;
36              
37 9         47 my @messages = $self->{_folder}->messages;
38 9         11 my @ret;
39 9         26 while (my $body = shift @messages) {
40 52         15417 push @ret, $self->bless_message( $body );
41             }
42 9         2540 return @ret;
43             }
44              
45              
46              
47             sub next_message {
48 2     2 1 8 my $self = shift;
49              
50 2 50       8 my $body = $self->{_folder}->next_message or return;
51 2         5 $self->bless_message( $body );
52             }
53              
54              
55              
56             sub bless_message {
57 54     54 1 48 my $self = shift;
58 54   50     92 my $message = shift || die "You must pass a message\n";
59              
60 54         141 return Email::Simple->new($message);
61             }
62              
63              
64              
65             sub reader {
66 1     1 1 723 my $self = shift;
67 1         7 return $self->{_folder};
68             }
69              
70             1;
71              
72              
73             __END__