NAME MooX::Types::MooseLike - some Moosish types and a type builder SYNOPSIS package MyApp::Types; use MooX::Types::MooseLike; use base qw(Exporter); our @EXPORT_OK = (); # Define some types my $defs = [{ name => 'MyType', test => sub { predicate($_[0]) }, message => sub { "$_[0] is not the type we want!" } }, { name => 'VarChar', test => sub { my ($value, $param) = @_; length($value) <= $param; }, message => sub { "$_[0] is too large! It should be less than or equal to $_[1]." } }]; # Make the types available - this adds them to @EXPORT_OK automatically. MooX::Types::MooseLike::register_types($defs, __PACKAGE__); ... # Somewhere in code that uses the type package MyApp::Foo; use Moo; use MyApp::Types qw(MyType VarChar); has attribute => ( is => 'ro', isa => MyType, ); has string => ( is => 'ro', isa => VarChar[25] ); DESCRIPTION This module provides a possibility to build your own set of Moose-like types. These custom types can then be used to describe fields in Moo-based classes. See MooX::Types::MooseLike::Base for a list of available base types. Its source also provides an example of how to build base types, along with both parameterizable and non-parameterizable. SEE ALSO MooX::Types::MooseLike::Numeric - an example of building subtypes. MooX::Types::SetObject - an example of building parameterized types. MooX::Types::MooseLike::Email, MooX::Types::MooseLike::DateTime Type::Tiny - another implementation of type constraints. Compatible with Moo, Moose and Mouse. FUNCTIONS register_types register_types( types, package, moose_namespace ) Install the given types within the package. This makes the types automatically exportable by adding them to @EXPORT_OK of the package. Types are expected to be an array ref where every type is of the following format: { name => 'MyType', test => sub { check_the_value_somehow($_[0]) }, message => sub { "$_[0] is not the type we want!" }, parameterizable => sub { ... }, # Optional inflate => sub { ... }, # Optional } exception_message exception_message( value, part_of_the_exception_string ) Helper function to be used in a type definition: { ... message => sub { return exception_message($_[0], 'a HashRef' }, ... } In the event of mismatching the type constraints it produces the message: " is not a HashRef!" inflate_type inflate_type( coderef ) Inflates the type to a Moose type. Requires Moose. AUTHOR mateu - Mateu X. Hunter (cpan:MATEU) CONTRIBUTORS mst - Matt S. Trout (cpan:MSTROUT) Mithaldu - Christian Walde (cpan:MITHALDU) Matt Phillips (cpan:MATTP) Arthur Axel fREW Schmidt (cpan:FREW) Toby Inkster (cpan:TOBYINK) Graham Knop (cpan:HAARG) COPYRIGHT Copyright (c) 2011-2015 the MooX::Types::MooseLike "AUTHOR" and "CONTRIBUTORS" as listed above. LICENSE This library is free software and may be distributed under the same terms as perl itself.