From 7b2bbcf10cab05962e0d128c285e0201401d2e14 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 10 Jun 2016 15:59:49 +0100 Subject: some Message tests also, a probably useless ->clone --- lib/Sietima/Message.pm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/Sietima/Message.pm b/lib/Sietima/Message.pm index 7202269..a864c02 100644 --- a/lib/Sietima/Message.pm +++ b/lib/Sietima/Message.pm @@ -15,6 +15,7 @@ has mail => ( has from => ( is => 'ro', isa => Address, + coerce => AddressFromStr, required => 1, ); @@ -26,13 +27,26 @@ has to => ( required => 1, ); +sub _clone_address { + Email::Address->new( + $_[0]->phrase, + $_[0]->address, + $_[0]->comment, + $_[0]->original, + ); +} + +sub _clone_mail { + Email::MIME->new($_[0]->as_string); +} + sub clone { my ($self,$args) = @_; return ref($self)->new({ - map { - $_ => $args->{$_} // $self->$_, - } qw(mail from to), + from => $args->{from} || _clone_address($self->from), + to => $args->{to} || [ map { _clone_address($_) } @{$self->to} ], + mail => $args->{mail} || _clone_mail($self->mail), }); } -- cgit v1.2.3