style tweaking
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor.pm
index c2bdb35..75d6eb3 100644 (file)
@@ -3,57 +3,47 @@ package MooseX::StrictConstructor;
 use strict;
 use warnings;
 
-our $VERSION = '0.06_01';
-$VERSION = eval $VERSION;
-
-use Class::MOP ();
-use Moose ();
+use Moose 0.94 ();
 use Moose::Exporter;
 use Moose::Util::MetaRole;
 use MooseX::StrictConstructor::Role::Object;
-use MooseX::StrictConstructor::Role::Meta::Method::Constructor;
-
-Moose::Exporter->setup_import_methods( also => 'Moose' );
 
-sub init_meta
 {
-    shift;
-    my %p = @_;
-
-    Moose->init_meta(%p);
-
-    my $caller = $p{for_class};
+    my %class_meta;
 
-    Moose::Util::MetaRole::apply_metaclass_roles
-        ( for_class => $caller,
-          constructor_class_roles =>
-          ['MooseX::StrictConstructor::Role::Meta::Method::Constructor'],
+    if ( $Moose::VERSION < 1.9900 ) {
+        require MooseX::StrictConstructor::Role::Meta::Method::Constructor;
+        %class_meta = (
+            constructor => [
+                'MooseX::StrictConstructor::Role::Meta::Method::Constructor']
         );
-
-    Moose::Util::MetaRole::apply_base_class_roles
-        ( for_class => $caller,
-          roles =>
-          [ 'MooseX::StrictConstructor::Role::Object' ],
-        );
-
-    return $caller->meta();
+    }
+    else {
+        require MooseX::StrictConstructor::Role::Meta::Class;
+        %class_meta
+            = ( class => ['MooseX::StrictConstructor::Role::Meta::Class'] );
+    }
+
+    Moose::Exporter->setup_import_methods(
+            class_metaroles  => \%class_meta,
+            base_class_roles => ['MooseX::StrictConstructor::Role::Object'],
+    );
 }
 
 1;
 
+# ABSTRACT: Make your object constructors blow up on unknown attributes
+
 __END__
 
 =pod
 
-=head1 NAME
-
-MooseX::StrictConstructor - Make your object constructors blow up on unknown attributes
-
 =head1 SYNOPSIS
 
     package My::Class;
 
-    use MooseX::StrictConstructor; # instead of use Moose
+    use Moose;
+    use MooseX::StrictConstructor;
 
     has 'size' => ...;
 
@@ -64,10 +54,10 @@ MooseX::StrictConstructor - Make your object constructors blow up on unknown att
 
 =head1 DESCRIPTION
 
-Using this class to load Moose instead of just loading using Moose
-itself makes your constructors "strict". If your constructor is called
-with an attribute init argument that your class does not declare, then
-it calls "Carp::confess()". This is a great way to catch small typos.
+Simply loading this module makes your constructors "strict". If your
+constructor is called with an attribute init argument that your class
+does not declare, then it calls "Carp::confess()". This is a great way
+to catch small typos.
 
 =head2 Subverting Strictness
 
@@ -89,10 +79,6 @@ you can delete it from the hash reference of parameters.
       }
   }
 
-=head1 AUTHOR
-
-Dave Rolsky, C<< <autarch@urth.org> >>
-
 =head1 BUGS
 
 Please report any bugs or feature requests to
@@ -101,11 +87,4 @@ interface at L<http://rt.cpan.org>.  I will be notified, and then
 you'll automatically be notified of progress on your bug as I make
 changes.
 
-=head1 COPYRIGHT & LICENSE
-
-Copyright 2007-2008 Dave Rolsky, All Rights Reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
 =cut