NAME
MooX::Types::MooseLike::Base - Moose like types for Moo
SYNOPSIS
package MyPackage;
use Moo;
use MooX::Types::MooseLike::Base qw(:all);
has "beers_by_day_of_week" => (
isa => HashRef
);
has "current_BAC" => (
isa => Num
);
# Also supporting is_$type. For example, is_Int() can be used as follows
has 'legal_age' => (
is => 'ro',
isa => sub { die "$_[0] is not of legal age"
unless (is_Int($_[0]) && $_[0] > 17) },
);
DESCRIPTION
Moo attributes (like Moose) have an 'isa' property. This module provides some basic types for this property. One can import all types with ':all' tag or import a list of types like:
use MooX::Types::MooseLike::Base qw/HashRef CodeRef/;
so one could then declare some attributtes like:
has 'contact' => (
is => 'ro',
isa => HashRef,
);
has 'guest_list' => (
is => 'ro',
isa => ArrayRef,
);
These types provide a check that the contact attribute is a hash reference, and that the guest_list is an array reference.
TYPES (subroutines)
All available types are listed below.
Any
Any type (test is always true)
Item
Synonymous with Any type
Undef
A type that is not defined
Defined
A type that is defined
Bool
A boolean 1|0 type
Value
A non-reference type
Ref
A reference type
Str
A non-reference type where a reference to it is a SCALAR
Num
A number type
Int
An integer type
ArrayRef
An ArrayRef (ARRAY) type
HashRef
A HashRef (HASH) type
CodeRef
A CodeRef (CODE) type
RegexpRef
A regular expression reference type
GlobRef
A glob reference type
FileHandle
A type that is either a builtin perl filehandle or an IO::Handle object
Object
A type that is an object (think blessed)
AHRef
An ArrayRef[HashRef] type
AUTHOR
Mateu Hunter hunter@missoula.org
THANKS
mst provided the implementation suggestion of using 'can' on a quoted sub to define a type (subroutine).
COPYRIGHT
Copyright 2011, Mateu Hunter
LICENSE
You may distribute this code under the same terms as Perl itself.