File Coverage

blib/lib/HTML/FromMail/Field.pm
Criterion Covered Total %
statement 15 63 23.8
branch 0 28 0.0
condition 0 18 0.0
subroutine 5 11 45.4
pod 5 6 83.3
total 25 126 19.8


line stmt bran cond sub pod time code
1             # This code is part of Perl distribution HTML-FromMail version 4.00.
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) 2003-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 HTML::FromMail::Field;{
13             our $VERSION = '4.00';
14             }
15              
16 1     1   10 use base 'HTML::FromMail::Page';
  1         2  
  1         141  
17              
18 1     1   8 use strict;
  1         1  
  1         31  
19 1     1   6 use warnings;
  1         2  
  1         78  
20              
21 1     1   8 use Log::Report 'html-frommail';
  1         2  
  1         7  
22              
23 1     1   1270 use Mail::Message::Field::Full ();
  1         105967  
  1         1094  
24              
25             #--------------------
26              
27             sub init($)
28 0     0 0   { my ($self, $args) = @_;
29 0   0       $args->{topic} ||= 'field';
30 0           $self->SUPER::init($args);
31             }
32              
33             #-----------
34              
35             #-----------
36              
37             sub fromHead($$@)
38 0     0 1   { my ($self, $head, $name, $args) = @_;
39 0           $head->study($name);
40             }
41              
42              
43             sub htmlName($$$)
44 0     0 1   { my ($self, $field, $args) = @_;
45 0 0         defined $field or return;
46              
47 0   0       my $reform = $args->{capitals} || $self->settings->{names} || 'UNCHANGED';
48 0 0         $self->plain2html($reform ? $field->wellformedName : $field->Name);
49             }
50              
51              
52             sub htmlBody($$$)
53 0     0 1   { my ($self, $field, $args) = @_;
54              
55 0           my $settings = $self->settings;
56 0   0       my $wrap = $args->{wrap} || $settings->{wrap};
57 0   0       my $content = $args->{content} || $settings->{content} || (defined $wrap && 'REFOLD') || 'DECODED';
58              
59 0 0         if($field->isa('Mail::Message::Field::Addresses'))
60 0   0       { my $how = $args->{address} || $settings->{address} || 'MAILTO';
61 0 0         $how eq 'PLAIN' or return $self->addressField($field, $how, $args)
62             }
63              
64 0 0         return $self->plain2html($field->unfoldedBody)
65             if $content eq 'UNFOLDED';
66              
67 0 0 0       $field->setWrapLength($wrap || 78)
68             if $content eq 'REFOLD';
69              
70 0           $self->plain2html($field->foldedBody);
71             }
72              
73              
74             sub addressField($$$)
75 0     0 1   { my ($self, $field, $how, $args) = @_;
76 0 0         return $self->plain2html($field->foldedBody) if $how eq 'PLAIN';
77              
78 0 0         return join ",
", map $_->address, $field->addresses
79             if $how eq 'ADDRESS';
80              
81 0 0         return join ",
", map {$_->phrase || $_->address} $field->addresses
  0 0          
82             if $how eq 'PHRASE';
83              
84 0 0         if($how eq 'MAILTO')
85 0           { my @links;
86 0           foreach my $address ($field->addresses)
87 0           { my $addr = $address->address;
88 0   0       my $phrase = $address->phrase || $addr;
89 0           push @links, qq[$phrase];
90             }
91 0           return join ",
", @links;
92             }
93              
94 0 0         if($how eq 'LINK')
95 0           { my @links;
96 0           foreach my $address ($field->addresses)
97 0           { my $addr = $address->address;
98 0   0       my $phrase = $address->phrase || '';
99 0           push @links, qq[$phrase <$addr>];
100             }
101 0           return join ",
", @links;
102             }
103              
104 0           error __x"don't know address field formatting '{how}'.", how => $how;
105             }
106              
107              
108             sub htmlAddresses($$)
109 0     0 1   { my ($self, $field, $args) = @_;
110 0 0         $field->can('addresses') or return undef;
111              
112 0           my @addrs;
113 0           foreach my $address ($field->addresses)
114 0           { my %addr = (
115             email => $address->address,
116             address => $self->plain2html($address->string),
117             );
118              
119 0 0         if(defined(my $phrase = $address->phrase))
120 0           { $addr{phrase} = $self->plain2html($phrase);
121             }
122              
123 0           push @addrs, \%addr;
124             }
125              
126 0           \@addrs;
127             }
128              
129             #--------------------
130              
131             1;