Class-Usul

 view release on metacpan or  search on metacpan

lib/Class/Usul/Types.pm  view on Meta::CPAN

package Class::Usul::Types;

use strict;
use warnings;

use Class::Usul::Constants qw( DEFAULT_ENCODING FALSE LOG_LEVELS NUL TRUE );
use Class::Usul::Functions qw( ensure_class_loaded exception untaint_cmdline );
use Encode                 qw( find_encoding );
use Scalar::Util           qw( blessed tainted );
use Try::Tiny;
use Type::Library             -base, -declare =>
                           qw( ConfigProvider DataEncoding DataLumper
                               DateTimeRef Localiser Locker Logger
                               NullLoadingClass Plinth ProcCommer );
use Type::Utils            qw( as class_type coerce extends
                               from message subtype via where );
use Unexpected::Functions  qw( inflate_message is_class_loaded );

use namespace::clean -except => 'meta';

BEGIN { extends q(Unexpected::Types) };

# Private functions
my $_exception_message_for_object_reference = sub {
   return inflate_message 'String [_1] is not an object reference', $_[ 0 ];
};

my $_exception_message_for_configprovider = sub {
   $_[ 0 ] and blessed $_[ 0 ] and return inflate_message
      'Object [_1] is missing some configuration attributes', blessed $_[ 0 ];

   return $_exception_message_for_object_reference->( $_[ 0 ] );
};

my $_exception_message_for_datetime = sub {
   $_[ 0 ] and blessed $_[ 0 ] and return inflate_message
      'Object [_1] is not of class DateTime', blessed $_[ 0 ];

   return $_exception_message_for_object_reference->( $_[ 0 ] );
};

my $_exception_message_for_datalumper = sub {
   $_[ 0 ] and blessed $_[ 0 ] and return inflate_message
      'Object [_1] is missing the "data_load" method', blessed $_[ 0 ];

   return $_exception_message_for_object_reference->( $_[ 0 ] );
};

my $_exception_message_for_localiser = sub {
   $_[ 0 ] and blessed $_[ 0 ] and return inflate_message
      'Object [_1] is missing the localize method', blessed $_[ 0 ];

   return $_exception_message_for_object_reference->( $_[ 0 ] );
};

my $_exception_message_for_locker = sub {
   $_[ 0 ] and blessed $_[ 0 ] and return inflate_message
      'Object [_1] is missing set / reset methods', blessed $_[ 0 ];

   return $_exception_message_for_object_reference->( $_[ 0 ] );
};

my $_exception_message_for_logger = sub {
   $_[ 0 ] and blessed $_[ 0 ] and return inflate_message
      'Object [_1] is missing a log level method', blessed $_[ 0 ];

   return $_exception_message_for_object_reference->( $_[ 0 ] );
};

my $_exception_message_for_plinth = sub {



( run in 1.692 second using v1.01-cache-2.11-cpan-39bf76dae61 )