MooseX::Types::Combine - Combine type libraries for exporting
version 0.50
package CombinedTypeLib;
use base 'MooseX::Types::Combine';
__PACKAGE__->provide_types_from(qw/TypeLib1 TypeLib2/);
package UserClass;
use CombinedTypeLib qw/Type1 Type2 ... /;
Allows you to create a single class that will allow you to export types from multiple type libraries:
package TransportTypes;
use base 'MooseX::Types::Combine';
__PACKAGE__->provide_types_from(qw/ MotorizedTypes UnmotorizedTypes /);
1;
In this example all types defined in MotorizedTypes
and UnmotorizedTypes
are available through the TransportTypes
combined type library.
package SkiingTrip;
use Moose;
use TransportTypes qw( CarType SkisType );
has car => ( is => 'ro', isa => CarType, required => 1 );
has ski_rack => ( is => 'ro', isa => ArrayRef[SkisType], required => 1 );
...
Libraries on the right end of the list passed to "provide_types_from" take precedence over those on the left in case of conflicts. So, in the above example if both the MotorizedTypes
and UnmotorizedTypes
libraries provided a Bike
type, you'd get the bicycle from UnmotorizedTypes
not the motorbike from MorotizedTypes
.
You can also further combine combined type libraries with additional type libraries or other combined type libraries in the same way to provide even larger type libraries:
package MeetingTransportTypes;
use base 'MooseX::Types::Combine';
__PACKAGE__->provide_types_from(qw/ TransportTypes TelepresenceTypes /);
1;
Sets or returns a list of type libraries (or combined type libraries) to re-export from.
Returns a list of all known types by their name.
Bugs may be submitted through the RT bug tracker (or bug-MooseX-Types@rt.cpan.org).
There is also a mailing list available for users of this distribution, at http://lists.perl.org/list/moose.html.
There is also an irc channel available for users of this distribution, at #moose
on irc.perl.org
.
Robert "phaylon" Sedlacek <rs@474.at>
This software is copyright (c) 2007 by Robert "phaylon" Sedlacek.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.