package Local::MooX::Types;
use MooX::Types::MooseLike;
use Scalar::Util qw(blessed);
use base qw(Exporter);
our @EXPORT_OK = ();
# define some types
my @defs = (
{
name => 'HashReference',
test => sub { ref $_[0] eq 'HASH' },
message => sub { "$_[0] is not a hashref" }
},
{
name => 'ArrayReference',
test => sub { ref $_[0] eq 'ARRAY' },
message => sub { "$_[0] is not an arrayref" }
},
{ # from the docs: isa => VarChar[25]:
name => 'VarChar',
test => sub {
my ($value, $param) = @_;
length($value) <= $param;
},
message => sub { "$_[0] is too large! It should be <= $_[1]" }
},
{
name => 'String', # test taken from MooX/Types/MooseLike/Base.pm source-code:
test => sub { defined $_[0] and (ref(\$_[0]) eq 'SCALAR') },
message => sub { "$_[0] is not a string" },
},
{
name => 'Integer',
test => sub { defined $_[0] and $_[0] =~ /\A\d+\Z/ },
message => sub { "$_[0] is not an integer" },
},
{
name => 'Object', # test taken from MooX/Types/MooseLike/Base.pm source-code:
test => sub {
defined $_[0] and blessed($_[0]) and blessed($_[0]) ne 'Regexp'
},
message => sub { "$_[0] is not an Object" },
},
);
MooX::Types::MooseLike::register_types(\@defs, __PACKAGE__);
1;