From 3a492beebdc22ea5f06384c99080515e11b1aa32 Mon Sep 17 00:00:00 2001 From: Dagfinn Ilmari Mannsåker Date: Tue, 9 Aug 2016 16:47:41 +0100 Subject: Use sub signatures! also: * add Sietima::Policy to enable stuff everywhere * use Test::Sietima everywhere (which imposes Sietima::Policy) --- lib/Sietima.pm | 2 +- lib/Sietima/MailStore.pm | 2 +- lib/Sietima/Message.pm | 6 ++---- lib/Sietima/Policy.pm | 18 ++++++++++++++++++ lib/Sietima/Role/AvoidDups.pm | 6 ++---- lib/Sietima/Role/Debounce.pm | 6 ++---- lib/Sietima/Role/NoMail.pm | 6 ++---- lib/Sietima/Role/ReplyTo.pm | 6 ++---- lib/Sietima/Role/SubjectTag.pm | 6 ++---- lib/Sietima/Role/SubscriberOnly.pm | 6 ++---- lib/Sietima/Role/SubscriberOnly/Drop.pm | 2 +- lib/Sietima/Role/SubscriberOnly/Moderate.pm | 10 +++------- lib/Sietima/Role/WithAdmin.pm | 2 +- lib/Sietima/Role/WithMailStore.pm | 2 +- lib/Sietima/Subscriber.pm | 2 +- lib/Sietima/Types.pm | 4 +--- t/lib/Test/Sietima.pm | 26 ++++++++------------------ t/lib/Test/Sietima/MailStore.pm | 16 ++++------------ t/tests/sietima.t | 3 --- t/tests/sietima/message.t | 6 +----- t/tests/sietima/role/avoid-dups.t | 3 --- t/tests/sietima/role/debounce.t | 3 --- t/tests/sietima/role/nomail.t | 3 --- t/tests/sietima/role/replyto.t | 3 --- t/tests/sietima/role/subject-tag.t | 3 --- t/tests/sietima/role/subscriberonly/drop.t | 3 --- t/tests/sietima/role/subscriberonly/moderate.t | 3 --- t/tests/sietima/subscriber.t | 7 ++----- 28 files changed, 57 insertions(+), 108 deletions(-) create mode 100644 lib/Sietima/Policy.pm diff --git a/lib/Sietima.pm b/lib/Sietima.pm index 79042fa..2a3c80b 100644 --- a/lib/Sietima.pm +++ b/lib/Sietima.pm @@ -1,6 +1,6 @@ package Sietima; -use 5.024; use Moo; +use Sietima::Policy; use Types::Standard qw(ArrayRef Object FileHandle Maybe); use Type::Params qw(compile); use Sietima::Types qw(Address AddressFromStr diff --git a/lib/Sietima/MailStore.pm b/lib/Sietima/MailStore.pm index cef6864..6f0a2ab 100644 --- a/lib/Sietima/MailStore.pm +++ b/lib/Sietima/MailStore.pm @@ -1,6 +1,6 @@ package Sietima::MailStore; -use 5.024; use Moo::Role; +use Sietima::Policy; requires 'store','retrieve_by_tags','retrieve_by_id'; diff --git a/lib/Sietima/Message.pm b/lib/Sietima/Message.pm index afe2ca9..9d8ef61 100644 --- a/lib/Sietima/Message.pm +++ b/lib/Sietima/Message.pm @@ -1,6 +1,6 @@ package Sietima::Message; -use 5.024; use Moo; +use Sietima::Policy; use Types::Standard qw(ArrayRef Object); use Sietima::Types qw(Address AddressFromStr Subscriber SubscriberFromAddress SubscriberFromStr @@ -36,9 +36,7 @@ has to => ( required => 1, ); -sub envelope { - my ($self) = @_; - +sub envelope ($self) { return { from => $self->from, to => [ map { $_->address } $self->to->@* ], diff --git a/lib/Sietima/Policy.pm b/lib/Sietima/Policy.pm new file mode 100644 index 0000000..bd0511f --- /dev/null +++ b/lib/Sietima/Policy.pm @@ -0,0 +1,18 @@ +package Sietima::Policy; +use 5.024; +use strict; +use warnings; +use feature ':5.24'; +use experimental 'signatures'; + +sub import { + # These affect the currently compiling scope, + # so no need for import::into + strict->import; + warnings->import; + experimental->import('signatures'); + feature->import(':5.24'); + return; +} + +1; diff --git a/lib/Sietima/Role/AvoidDups.pm b/lib/Sietima/Role/AvoidDups.pm index e0d09c9..598d57b 100644 --- a/lib/Sietima/Role/AvoidDups.pm +++ b/lib/Sietima/Role/AvoidDups.pm @@ -1,12 +1,10 @@ package Sietima::Role::AvoidDups; -use 5.024; use Moo::Role; +use Sietima::Policy; use Email::Address; use namespace::clean; -around subscribers_to_send_to => sub { - my ($orig,$self,$mail) = @_; - +around subscribers_to_send_to => sub ($orig,$self,$mail) { my @already_receiving = map { Email::Address->parse($_) } $mail->header_str('to'),$mail->header_str('cc'); diff --git a/lib/Sietima/Role/Debounce.pm b/lib/Sietima/Role/Debounce.pm index 59bb1f2..8df53a5 100644 --- a/lib/Sietima/Role/Debounce.pm +++ b/lib/Sietima/Role/Debounce.pm @@ -1,13 +1,11 @@ package Sietima::Role::Debounce; -use 5.024; use Moo::Role; +use Sietima::Policy; use namespace::clean; my $been_there = 'X-Been-There'; -around munge_mail => sub { - my ($orig,$self,$incoming_mail) = @_; - +around munge_mail => sub ($orig,$self,$incoming_mail) { my $return_path = $self->return_path->address; if (my $there = $incoming_mail->header_str($been_there)) { return if $there =~ m{\b\Q$return_path\E\b}; diff --git a/lib/Sietima/Role/NoMail.pm b/lib/Sietima/Role/NoMail.pm index c327e46..84d7d9b 100644 --- a/lib/Sietima/Role/NoMail.pm +++ b/lib/Sietima/Role/NoMail.pm @@ -1,11 +1,9 @@ package Sietima::Role::NoMail; -use 5.024; use Moo::Role; +use Sietima::Policy; use namespace::clean; -around subscribers_to_send_to => sub { - my ($orig,$self,$mail) = @_; - +around subscribers_to_send_to => sub ($orig,$self,$mail) { return [ grep { $_->prefs->{wants_mail} // 1 } $self->$orig($mail)->@*, diff --git a/lib/Sietima/Role/ReplyTo.pm b/lib/Sietima/Role/ReplyTo.pm index d4eb5e5..56a8ed9 100644 --- a/lib/Sietima/Role/ReplyTo.pm +++ b/lib/Sietima/Role/ReplyTo.pm @@ -1,6 +1,6 @@ package Sietima::Role::ReplyTo; -use 5.024; use Moo::Role; +use Sietima::Policy; use Types::Standard qw(Bool); use List::AllUtils qw(part); use namespace::clean; @@ -11,9 +11,7 @@ has munge_reply_to => ( default => 0, ); -around munge_mail => sub { - my ($orig,$self,$mail) = @_; - +around munge_mail => sub ($orig,$self,$mail) { my @messages = $self->$orig($mail); my @ret; for my $m (@messages) { diff --git a/lib/Sietima/Role/SubjectTag.pm b/lib/Sietima/Role/SubjectTag.pm index 1daa662..edaa598 100644 --- a/lib/Sietima/Role/SubjectTag.pm +++ b/lib/Sietima/Role/SubjectTag.pm @@ -1,6 +1,6 @@ package Sietima::Role::SubjectTag; -use 5.024; use Moo::Role; +use Sietima::Policy; use Types::Standard qw(Str); use namespace::clean; @@ -10,9 +10,7 @@ has subject_tag => ( required => 1, ); -around munge_mail => sub { - my ($orig,$self,$mail) = @_; - +around munge_mail => sub ($orig,$self,$mail) { my $tag = '['.$self->subject_tag.']'; my $subject = $mail->header_str('Subject'); unless ($subject =~ m{\Q$tag\E}) { diff --git a/lib/Sietima/Role/SubscriberOnly.pm b/lib/Sietima/Role/SubscriberOnly.pm index 07eac1e..f01dadf 100644 --- a/lib/Sietima/Role/SubscriberOnly.pm +++ b/lib/Sietima/Role/SubscriberOnly.pm @@ -1,6 +1,6 @@ package Sietima::Role::SubscriberOnly; -use 5.024; use Moo::Role; +use Sietima::Policy; use Email::Address; use List::AllUtils qw(any); use namespace::clean; @@ -9,9 +9,7 @@ requires 'munge_mail_from_non_subscriber'; our $let_it_pass=0; -around munge_mail => sub { - my ($orig,$self,$mail) = @_; - +around munge_mail => sub ($orig,$self,$mail) { my ($from) = Email::Address->parse( $mail->header_str('from') ); if ( $let_it_pass or any { $_->match($from) } $self->subscribers->@* ) { diff --git a/lib/Sietima/Role/SubscriberOnly/Drop.pm b/lib/Sietima/Role/SubscriberOnly/Drop.pm index c511c9b..2036c99 100644 --- a/lib/Sietima/Role/SubscriberOnly/Drop.pm +++ b/lib/Sietima/Role/SubscriberOnly/Drop.pm @@ -1,6 +1,6 @@ package Sietima::Role::SubscriberOnly::Drop; -use 5.024; use Moo::Role; +use Sietima::Policy; use namespace::clean; with 'Sietima::Role::SubscriberOnly'; diff --git a/lib/Sietima/Role/SubscriberOnly/Moderate.pm b/lib/Sietima/Role/SubscriberOnly/Moderate.pm index 912fb49..89cac02 100644 --- a/lib/Sietima/Role/SubscriberOnly/Moderate.pm +++ b/lib/Sietima/Role/SubscriberOnly/Moderate.pm @@ -1,6 +1,6 @@ package Sietima::Role::SubscriberOnly::Moderate; -use 5.024; use Moo::Role; +use Sietima::Policy; use Email::Stuffer; use Email::MIME; use namespace::clean; @@ -9,9 +9,7 @@ with 'Sietima::Role::SubscriberOnly', 'Sietima::Role::WithMailStore', 'Sietima::Role::WithAdmin'; -sub munge_mail_from_non_subscriber { - my ($self,$mail) = @_; - +sub munge_mail_from_non_subscriber ($self,$mail) { my $id = $self->mail_store->store($mail,'moderation'); my $notice = Email::Stuffer ->from($self->return_path) @@ -26,9 +24,7 @@ sub munge_mail_from_non_subscriber { return; } -sub resume { - my ($self,$mail_id) = @_; - +sub resume ($self,$mail_id) { my $mail = $self->mail_store->retrieve_by_id($mail_id); local $Sietima::Role::SubscriberOnly::let_it_pass=1; $self->handle_mail($mail); diff --git a/lib/Sietima/Role/WithAdmin.pm b/lib/Sietima/Role/WithAdmin.pm index da0f05a..49b0f51 100644 --- a/lib/Sietima/Role/WithAdmin.pm +++ b/lib/Sietima/Role/WithAdmin.pm @@ -1,6 +1,6 @@ package Sietima::Role::WithAdmin; -use 5.024; use Moo::Role; +use Sietima::Policy; use Sietima::Types qw(Address AddressFromStr); use namespace::clean; diff --git a/lib/Sietima/Role/WithMailStore.pm b/lib/Sietima/Role/WithMailStore.pm index 806d273..9d3a8bd 100644 --- a/lib/Sietima/Role/WithMailStore.pm +++ b/lib/Sietima/Role/WithMailStore.pm @@ -1,6 +1,6 @@ package Sietima::Role::WithMailStore; -use 5.024; use Moo::Role; +use Sietima::Policy; use Sietima::Types qw(MailStore); use namespace::clean; diff --git a/lib/Sietima/Subscriber.pm b/lib/Sietima/Subscriber.pm index 79a26fb..44b36ed 100644 --- a/lib/Sietima/Subscriber.pm +++ b/lib/Sietima/Subscriber.pm @@ -1,6 +1,6 @@ package Sietima::Subscriber; -use 5.024; use Moo; +use Sietima::Policy; use Types::Standard qw(ArrayRef HashRef Object); use Type::Params qw(compile); use Sietima::Types qw(Address AddressFromStr); diff --git a/lib/Sietima/Types.pm b/lib/Sietima/Types.pm index af650b9..27a3e17 100644 --- a/lib/Sietima/Types.pm +++ b/lib/Sietima/Types.pm @@ -1,7 +1,5 @@ package Sietima::Types; -use 5.024; -use strict; -use warnings; +use Sietima::Policy; use Type::Utils -all; use Types::Standard qw(Str HashRef); use namespace::clean; diff --git a/t/lib/Test/Sietima.pm b/t/lib/Test/Sietima.pm index 31fb809..7b2a6ae 100644 --- a/t/lib/Test/Sietima.pm +++ b/t/lib/Test/Sietima.pm @@ -1,7 +1,4 @@ package Test::Sietima; -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Import::Into; use Email::Stuffer; @@ -10,6 +7,7 @@ use Data::Printer; use Sietima; use Test2::Bundle::Extended; use Test2::API qw(context); +use Sietima::Policy; use namespace::clean; sub import { @@ -17,6 +15,7 @@ sub import { Test2::Bundle::Extended->import::into($target); Test2::Plugin::DieOnFail->import::into($target); Data::Printer->import::into($target); + Sietima::Policy->import::into($target); for my $function (qw(transport make_sietima make_mail deliveries_are test_sending)) { @@ -33,9 +32,7 @@ sub transport { return $transport; } -sub make_sietima { - my (%args) = @_; - +sub make_sietima (%args) { my $class = 'Sietima'; if (my $traits = delete $args{with_traits}) { $class = $class->with_traits($traits->@*); @@ -48,14 +45,12 @@ sub make_sietima { }); } -my $maybe = sub { - my ($obj,$method,$arg) = @_; +my $maybe = sub ($obj,$method,$arg) { return $obj unless $arg; return $obj->$method($arg); }; -my $mapit = sub { - my ($obj,$method,$arg) = @_; +my $mapit = sub ($obj,$method,$arg) { return $obj unless $arg; for my $k (keys $arg->%*) { $obj = $obj->$method($k, $arg->{$k}); @@ -63,9 +58,7 @@ my $mapit = sub { return $obj; }; -sub make_mail { - my (%args) = @_; - +sub make_mail (%args) { Email::Stuffer ->from($args{from}||'someone@users.example.com') ->to($args{to}||$return_path) @@ -76,9 +69,7 @@ sub make_mail { ->email; } -sub deliveries_are { - my (%args) = @_; - +sub deliveries_are (%args) { my $ctx = context(); my $checker; @@ -136,8 +127,7 @@ sub deliveries_are { $ctx->release; } -sub test_sending { - my (%args) = @_; +sub test_sending (%args) { my $ctx = context(); my $sietima = delete $args{sietima}; diff --git a/t/lib/Test/Sietima/MailStore.pm b/t/lib/Test/Sietima/MailStore.pm index ff4064c..60054c3 100644 --- a/t/lib/Test/Sietima/MailStore.pm +++ b/t/lib/Test/Sietima/MailStore.pm @@ -1,8 +1,6 @@ package Test::Sietima::MailStore; -use strict; -use warnings; -use 5.024; use Moo; +use Sietima::Policy; use List::AllUtils qw(all); use namespace::clean; @@ -15,9 +13,7 @@ has _mails => ( sub clear { shift->_mails([]) } -sub store { - my ($self,$mail,@tags) = @_; - +sub store ($self,$mail,@tags) { my $id = time(); push $self->_mails->@*, { id => $id, @@ -27,9 +23,7 @@ sub store { return $id; } -sub retrieve_by_tags { - my ($self,@tags) = @_; - +sub retrieve_by_tags ($self,@tags){ my @ret; for my $m ($self->_mails->@*) { next unless all { $m->{tags}{$_} } @tags; @@ -42,9 +36,7 @@ sub retrieve_by_tags { return \@ret; } -sub retrieve_by_id { - my ($self,$id) = @_; - +sub retrieve_by_id ($self,$id) { for my $m ($self->_mails->@*) { next unless $m->{id} eq $id; return Email::MIME->new($m->{mail}); diff --git a/t/tests/sietima.t b/t/tests/sietima.t index 143c026..987cbdd 100644 --- a/t/tests/sietima.t +++ b/t/tests/sietima.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/message.t b/t/tests/sietima/message.t index 5d9ceca..d1c548a 100644 --- a/t/tests/sietima/message.t +++ b/t/tests/sietima/message.t @@ -1,10 +1,6 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; -use Test2::Bundle::Extended; -use Test2::Plugin::DieOnFail; +use Test::Sietima; use Email::Stuffer; use Sietima::Message; diff --git a/t/tests/sietima/role/avoid-dups.t b/t/tests/sietima/role/avoid-dups.t index 58cd308..671d898 100644 --- a/t/tests/sietima/role/avoid-dups.t +++ b/t/tests/sietima/role/avoid-dups.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/role/debounce.t b/t/tests/sietima/role/debounce.t index 903427b..ba7566c 100644 --- a/t/tests/sietima/role/debounce.t +++ b/t/tests/sietima/role/debounce.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/role/nomail.t b/t/tests/sietima/role/nomail.t index a0be192..1622fb4 100644 --- a/t/tests/sietima/role/nomail.t +++ b/t/tests/sietima/role/nomail.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/role/replyto.t b/t/tests/sietima/role/replyto.t index 1bd2d02..c502391 100644 --- a/t/tests/sietima/role/replyto.t +++ b/t/tests/sietima/role/replyto.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/role/subject-tag.t b/t/tests/sietima/role/subject-tag.t index 490f1a3..e3a266b 100644 --- a/t/tests/sietima/role/subject-tag.t +++ b/t/tests/sietima/role/subject-tag.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/role/subscriberonly/drop.t b/t/tests/sietima/role/subscriberonly/drop.t index c4123af..6229bb3 100644 --- a/t/tests/sietima/role/subscriberonly/drop.t +++ b/t/tests/sietima/role/subscriberonly/drop.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; diff --git a/t/tests/sietima/role/subscriberonly/moderate.t b/t/tests/sietima/role/subscriberonly/moderate.t index b76a01a..a641a55 100644 --- a/t/tests/sietima/role/subscriberonly/moderate.t +++ b/t/tests/sietima/role/subscriberonly/moderate.t @@ -1,7 +1,4 @@ #!perl -use strict; -use warnings; -use 5.024; use lib 't/lib'; use Test::Sietima; use Test::Sietima::MailStore; diff --git a/t/tests/sietima/subscriber.t b/t/tests/sietima/subscriber.t index 979997b..23651a9 100644 --- a/t/tests/sietima/subscriber.t +++ b/t/tests/sietima/subscriber.t @@ -1,9 +1,6 @@ #!perl -use strict; -use warnings; -use 5.024; -use Test2::Bundle::Extended; -use Test2::Plugin::DieOnFail; +use lib 't/lib'; +use Test::Sietima; use Sietima::Subscriber; subtest 'simple' => sub { -- cgit v1.2.3