role support, in MooseX::StrictConstructor::FromRole
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor / FromRole.pm
diff --git a/lib/MooseX/StrictConstructor/FromRole.pm b/lib/MooseX/StrictConstructor/FromRole.pm
new file mode 100644 (file)
index 0000000..8c6e580
--- /dev/null
@@ -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<Moosex::StrictConstructor> except that it also
+works from roles.  This is only available in Moose 2.0 and later.
+
+=cut