diff options
Diffstat (limited to 'lib/Sietima/Types.pm')
-rw-r--r-- | lib/Sietima/Types.pm | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/Sietima/Types.pm b/lib/Sietima/Types.pm index 27a3e17..3addf46 100644 --- a/lib/Sietima/Types.pm +++ b/lib/Sietima/Types.pm @@ -5,15 +5,24 @@ use Types::Standard qw(Str HashRef); use namespace::clean; use Type::Library -base, - -declare => qw(Address AddressFromStr + -declare => qw(SietimaObj + Address AddressFromStr EmailMIME Message Subscriber SubscriberFromAddress SubscriberFromStr SubscriberFromHashRef - Transport MailStore); + Transport MailStore MailStoreFromHashRef); + +class_type SietimaObj, { class => 'Sietima' }; class_type EmailMIME, { class => 'Email::MIME' }; role_type Transport, { role => 'Email::Sender::Transport' }; role_type MailStore, { role => 'Sietima::MailStore' }; +declare_coercion MailStoreFromHashRef, + to_type MailStore, from HashRef, + q{ require Module::Runtime; + Module::Runtime::use_module(delete $_->{class})->new($_); + }; + class_type Address, { class => 'Email::Address' }; declare_coercion AddressFromStr, to_type Address, from Str, |