diff options
Diffstat (limited to 'lib/Sietima/HeaderURI.pm')
-rw-r--r-- | lib/Sietima/HeaderURI.pm | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/Sietima/HeaderURI.pm b/lib/Sietima/HeaderURI.pm index 347ca77..2196724 100644 --- a/lib/Sietima/HeaderURI.pm +++ b/lib/Sietima/HeaderURI.pm @@ -3,7 +3,7 @@ use Moo; use Sietima::Policy; use Sietima::Types qw(Address AddressFromStr is_Address); use Types::Standard qw(Str is_Str ClassName HashRef Optional); -use Type::Params qw(compile); +use Type::Params -sigs; use Types::URI qw(Uri is_Uri); use Email::Address; use namespace::clean; @@ -101,10 +101,7 @@ preserved. =cut -sub _args_from_address { - my ($address, $query) = @_; - $query ||= {}; - +sub _args_from_address($address, $query={}) { my $uri = URI->new($address->address,'mailto'); $uri->query_form($query->%*); @@ -119,8 +116,7 @@ sub _args_from_address { }; } -around BUILDARGS => sub { - my ($orig, $class, @args) = @_; +around BUILDARGS => sub($orig, $class, @args) { if (@args != 1 or ref($args[0]) eq 'HASH' and $args[0]->{uri}) { return $class->$orig(@args); } @@ -158,14 +154,14 @@ Common query keys are C<subject> and C<body>. See RFC 6068 ("The =cut -sub new_from_address { - state $check = compile( - ClassName, +signature_for new_from_address => ( + method => Str, + positional => [ Address->plus_coercions(AddressFromStr), Optional[HashRef], - ); - my ($class, $address, $query) = $check->(@_); - + ], +); +sub new_from_address($class, $address, $query={}) { return $class->new(_args_from_address($address,$query)); } @@ -196,9 +192,7 @@ C<header_raw_set>|Email::Simple::Header/header_raw_set >>. =cut -sub as_header_raw { - my ($self) = @_; - +sub as_header_raw($self) { my $str = sprintf '<%s>',$self->uri; if (my $c = $self->comment) { $str .= sprintf ' (%s)',$c; |