X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-StrictConstructor.git;a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor%2FFromRole.pm;fp=lib%2FMooseX%2FStrictConstructor%2FFromRole.pm;h=8c6e580466263efbd9d86cc699963dbe37a3594f;hp=0000000000000000000000000000000000000000;hb=98630abcd6d5539820a18badabe2105724116264;hpb=4a070866bc7b2cf1792322865e0c7997ef7401a3 diff --git a/lib/MooseX/StrictConstructor/FromRole.pm b/lib/MooseX/StrictConstructor/FromRole.pm new file mode 100644 index 0000000..8c6e580 --- /dev/null +++ b/lib/MooseX/StrictConstructor/FromRole.pm @@ -0,0 +1,48 @@ +package MooseX::StrictConstructor::FromRole; + +use strict; +use warnings; + +use Moose 0.94 (); +use Moose::Exporter; +use Moose::Util::MetaRole; + +{ + my %class_meta = ( class => ['MooseX::StrictConstructor::Trait::Class'] ); + my %role_meta; + + if ( $Moose::VERSION < 1.9900 ) { + require MooseX::StrictConstructor::Trait::Method::Constructor; + $class_meta{constructor} + = ['MooseX::StrictConstructor::Trait::Method::Constructor']; + } + else + { + %role_meta + = ( + role => ['MooseX::StrictConstructor::Trait::Role'], + application_to_class => ['MooseX::StrictConstructor::Trait::ApplicationToClass'], + application_to_role =>['MooseX::StrictConstructor::Trait::ApplicationToRole'], + ); + } + + Moose::Exporter->setup_import_methods( + class_metaroles => \%class_meta, + role_metaroles => \%role_meta, + ); +} + +1; + +# ABSTRACT: MooseX::StrictConstructor behaviour when used from a role + +__END__ + +=pod + +=head1 DESCRIPTION + +This package is equivalent to C except that it also +works from roles. This is only available in Moose 2.0 and later. + +=cut