diff options
author | dakkar <dakkar@thenautilus.net> | 2016-06-10 15:59:49 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2016-06-10 15:59:49 +0100 |
commit | 7b2bbcf10cab05962e0d128c285e0201401d2e14 (patch) | |
tree | 2e376fcaaac563eff3f03147ab5be7a8ab2d13fc /lib | |
parent | move Test2::* tests to subdir (diff) | |
download | Sietima-7b2bbcf10cab05962e0d128c285e0201401d2e14.tar.gz Sietima-7b2bbcf10cab05962e0d128c285e0201401d2e14.tar.bz2 Sietima-7b2bbcf10cab05962e0d128c285e0201401d2e14.zip |
some Message tests
also, a probably useless ->clone
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Sietima/Message.pm | 20 |
1 files changed, 17 insertions, 3 deletions
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), }); } |