|
{
$Courriel::Types::Internal::VERSION = '0.21' ;
}
qw(
Body
EmailAddressStr
HeaderArray
Headers
Part
StringRef
)
];
subtype Body,
as role_type( 'Courriel::Role::Body' );
subtype Headers,
as class_type( 'Courriel::Headers' );
subtype EmailAddressStr,
as NonEmptyStr;
coerce EmailAddressStr,
from class_type( 'Email::Address' ),
via { $_ -> format () };
my $_check_header_array = sub {
return 0 unless @{ $_ } % 2 == 0;
my ( @even , @odd );
for my $i ( 0 .. $
if ( $i % 2 ) {
push @odd , $i ;
}
else {
push @even , $i ;
}
}
return 0 unless all { defined $_ && length $_ && ! ref $_ } @{ $_ }[ @even ];
return 0
unless all { blessed( $_ ) && $_ ->isa( 'Courriel::Header' ) } @{ $_ }[ @odd ];
return 1;
};
subtype HeaderArray,
as ArrayRef,
&where ( $_check_header_array ),
message { 'The array reference must contain an even number of elements' };
subtype Part,
as role_type( 'Courriel::Role::Part' );
subtype StringRef,
as ScalarRef[Str];
coerce StringRef,
from Str,
via { my $str = $_ ; \ $str };
1;
|