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 89 90 91 92 93 94
|
# This code is part of Perl distribution Mail-Message version 4.02.
# The POD got stripped from this file by OODoc version 3.06.
# For contributors see file ChangeLog.
# This software is copyright (c) 2001-2026 by Mark Overmeer.
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
# SPDX-License-Identifier: Artistic-1.0-Perl OR GPL-1.0-or-later
package Mail::Message::Field::Flex;{
our $VERSION = '4.02';
}
use parent 'Mail::Message::Field';
use strict;
use warnings;
use Log::Report 'mail-message', import => [ qw// ];
#--------------------
sub new($;$$@)
{ my $class = shift;
my $args
= @_ <= 2 || ! ref $_[-1] ? {}
: ref $_[-1] eq 'ARRAY' ? { @{pop @_} }
: pop @_;
my ($name, $body) = $class->consume(@_==1 ? (shift) : (shift, shift));
defined $body or return ();
# Attributes preferably stored in array to protect order.
my $attr = $args->{attributes};
$attr = [ %$attr ] if defined $attr && ref $attr eq 'HASH';
push @$attr, @_;
$class->SUPER::new(%$args, name => $name, body => $body, attributes => $attr);
}
sub init($)
{ my ($self, $args) = @_;
@$self{ qw/MMFF_name MMFF_body/ } = @$args{ qw/name body/ };
$self->comment($args->{comment}) if exists $args->{comment};
my $attr = $args->{attributes};
$self->attribute(shift @$attr, shift @$attr) while @$attr;
$self;
}
sub clone()
{ my $self = shift;
(ref $self)->new($self->Name, $self->body);
}
sub length()
{ my $self = shift;
length($self->{MMFF_name}) + 1 + length($self->{MMFF_body});
}
sub name() { lc($_[0]->{MMFF_name}) }
sub Name() { $_[0]->{MMFF_name} }
sub folded(;$)
{ my $self = shift;
wantarray
or return $self->{MMFF_name}.':'.$self->{MMFF_body};
my @lines = $self->foldedBody;
my $first = $self->{MMFF_name}. ':'. shift @lines;
($first, @lines);
}
sub unfoldedBody($;@)
{ my $self = shift;
$self->{MMFF_body} = $self->fold($self->{MMFF_name}, @_) if @_;
$self->unfold($self->{MMFF_body});
}
sub foldedBody($)
{ my ($self, $body) = @_;
if(@_==2) { $self->{MMFF_body} = $body }
else { $body = $self->{MMFF_body} }
wantarray ? (split /^/, $body) : $body;
}
1;
|