role support, in MooseX::StrictConstructor::FromRole
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor / FromRole.pm
1 package MooseX::StrictConstructor::FromRole;
2
3 use strict;
4 use warnings;
5
6 use Moose 0.94 ();
7 use Moose::Exporter;
8 use Moose::Util::MetaRole;
9
10 {
11     my %class_meta = ( class => ['MooseX::StrictConstructor::Trait::Class'] );
12     my %role_meta;
13
14     if ( $Moose::VERSION < 1.9900 ) {
15         require MooseX::StrictConstructor::Trait::Method::Constructor;
16         $class_meta{constructor}
17             = ['MooseX::StrictConstructor::Trait::Method::Constructor'];
18     }
19     else
20     {
21         %role_meta
22             = (
23                 role => ['MooseX::StrictConstructor::Trait::Role'],
24                 application_to_class => ['MooseX::StrictConstructor::Trait::ApplicationToClass'],
25                 application_to_role =>['MooseX::StrictConstructor::Trait::ApplicationToRole'],
26               );
27     }
28
29     Moose::Exporter->setup_import_methods(
30         class_metaroles => \%class_meta,
31         role_metaroles  => \%role_meta,
32     );
33 }
34
35 1;
36
37 # ABSTRACT: MooseX::StrictConstructor behaviour when used from a role
38
39 __END__
40
41 =pod
42
43 =head1 DESCRIPTION
44
45 This package is equivalent to C<Moosex::StrictConstructor> except that it also
46 works from roles.  This is only available in Moose 2.0 and later.
47
48 =cut