File Coverage

blib/lib/Mail/Box/Message.pm
Criterion Covered Total %
statement 58 63 92.0
branch 16 22 72.7
condition 7 15 46.6
subroutine 16 17 94.1
pod 8 10 80.0
total 105 127 82.6


line stmt bran cond sub pod time code
1             # This code is part of Perl distribution Mail-Box version 4.01.
2             # The POD got stripped from this file by OODoc version 3.05.
3             # For contributors see file ChangeLog.
4              
5             # This software is copyright (c) 2001-2025 by Mark Overmeer.
6              
7             # This is free software; you can redistribute it and/or modify it under
8             # the same terms as the Perl 5 programming language system itself.
9             # SPDX-License-Identifier: Artistic-1.0-Perl OR GPL-1.0-or-later
10              
11              
12             package Mail::Box::Message;{
13             our $VERSION = '4.01';
14             }
15              
16 34     34   264 use parent 'Mail::Message';
  34         79  
  34         302  
17              
18 34     34   4065159 use strict;
  34         122  
  34         903  
19 34     34   151 use warnings;
  34         120  
  34         2212  
20              
21 34     34   196 use Log::Report 'mail-box', import => [ qw// ];
  34         65  
  34         236  
22              
23 34     34   6078 use Scalar::Util qw/weaken/;
  34         75  
  34         1880  
24              
25 34     34   20293 use Mail::Box::Message::Destructed ();
  34         156  
  34         25015  
26              
27             #--------------------
28              
29             sub init($)
30 2041     2041 0 4210 { my ($self, $args) = @_;
31 2041         9292 $self->SUPER::init($args);
32              
33 2041         66493 $self->{MBM_body_type} = $args->{body_type};
34 2041         6518 $self->{MBM_folder} = $args->{folder};
35 2041         4986 weaken($self->{MBM_folder});
36              
37 2041         7051 $self;
38             }
39              
40             sub head(;$)
41 20692     20692 1 181694 { my $self = shift;
42 20692 100       66998 @_ or return $self->SUPER::head;
43              
44 2337         3798 my $new = shift;
45 2337         6110 my $old = $self->head;
46 2337         16763 $self->SUPER::head($new);
47              
48 2337 50 66     503881 defined $new || defined $old
49             or return undef;
50              
51 2337 100       6701 my $folder = $self->folder
52             or return $new;
53              
54 1600 100 66     14107 if(!defined $new && defined $old && !$old->isDelayed)
    50 66        
      33        
55 55         188 { $folder->messageId($self->messageId, undef);
56 55         189 $folder->toBeUnthreaded($self);
57             }
58             elsif(defined $new && !$new->isDelayed)
59 1545         5839 { $folder->messageId($self->messageId, $self);
60 1545         5707 $folder->toBeThreaded($self);
61             }
62              
63 1600 100       5692 $new || $old;
64             }
65              
66             #--------------------
67              
68             sub folder(;$)
69 4416     4416 1 9095 { my $self = shift;
70 4416 100       11339 if(@_)
71 142         387 { $self->{MBM_folder} = shift;
72 142         407 weaken($self->{MBM_folder});
73 142         495 $self->modified(1);
74             }
75 4416         22016 $self->{MBM_folder};
76             }
77              
78              
79 2420 100   2420 1 9272 sub seqnr(;$) { my $self = shift; @_ ? $self->{MBM_seqnr} = shift : $self->{MBM_seqnr} }
  2420         8653  
80              
81             #--------------------
82              
83             sub copyTo($@)
84 129     129 1 314 { my ($self, $folder) = (shift, shift);
85 129         528 $folder->addMessage($self->clone(@_));
86             }
87              
88              
89             sub moveTo($@)
90 0     0 1 0 { my ($self, $folder, %args) = @_;
91              
92             exists $args{share} || exists $args{shallow_body}
93 0 0 0     0 or $args{share} = 1;
94              
95 0         0 my $added = $self->copyTo($folder, %args);
96 0         0 $self->label(deleted => 1);
97 0         0 $added;
98             }
99              
100             #--------------------
101              
102             sub readBody($$;$)
103 1574     1574 1 2351459 { my ($self, $parser, $head, $getbodytype) = @_;
104              
105 1574 50       8238 unless($getbodytype)
106 1574         4840 { my $folder = $self->folder;
107 1574 50   1658   10371 $getbodytype = sub { $folder->determineBodyType(@_) } if defined $folder;
  1658         256892  
108             }
109              
110 1574         6700 $self->SUPER::readBody($parser, $head, $getbodytype);
111             }
112              
113              
114 28     28 1 61 sub diskDelete() { $_[0] }
115              
116             sub forceLoad() { # compatibility
117 1     1 0 3 my $self = shift;
118 1         11 $self->loadBody(@_);
119 1         10 $self;
120             }
121              
122             #--------------------
123              
124 55     55 1 21396 sub destruct() { Mail::Box::Message::Destructed->coerce(shift) }
125              
126             1;