Doh, reversed the conditional and broke old Moose
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor.pm
index 0e3714b..f14e4c4 100644 (file)
@@ -3,45 +3,37 @@ package MooseX::StrictConstructor;
 use strict;
 use warnings;
 
-our $VERSION = '0.06';
+use Moose 0.94 ();
+use Moose::Exporter;
+use Moose::Util::MetaRole;
 
-use Moose;
-use MooseX::Object::StrictConstructor;
+use MooseX::StrictConstructor::Trait::Class;
+use MooseX::StrictConstructor::Trait::Method::Constructor;;
 
+my %metaroles = (
+    class => ['MooseX::StrictConstructor::Trait::Class'],
+);
 
-sub import
-{
-    my $caller = caller();
-
-    return if $caller eq 'main';
-
-    Moose::init_meta( $caller,
-                      'MooseX::Object::StrictConstructor',
-                      'MooseX::StrictConstructor::Meta::Class',
-                    );
-
-    Moose->import( { into => $caller } );
-
-    return;
-}
-
+$metaroles{constructor}
+    = ['MooseX::StrictConstructor::Trait::Method::Constructor']
+    if $Moose::VERSION <= 1.9900;
 
+Moose::Exporter->setup_import_methods( class_metaroles => \%metaroles );
 
 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' => ...;
 
@@ -52,22 +44,21 @@ 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 C<< Moose->throw_error() >>. This is a great way to
+catch small typos.
 
 =head2 Subverting Strictness
 
-You may find yourself wanting to accept a parameter to the constructor
-that is not the name of an attribute.
+You may find yourself wanting to have your constructor accept a
+parameter which does not correspond to an attribute.
 
-In that case, you'll probably be writing a C<BUILD()> method to deal
-with it. Your C<BUILD()> method will receive two parameters, the new
-object, and a hash reference of parameters passed to the constructor.
-
-If you delete keys from this hash reference, then they will not be
-seen when this class does its checking.
+In that case, you'll probably also be writing a C<BUILD()> or
+C<BUILDARGS()> method to deal with that parameter. In a C<BUILDARGS()>
+method, you can simply make sure that this parameter is not included
+in the hash reference you return. Otherwise, in a C<BUILD()> method,
+you can delete it from the hash reference of parameters.
 
   sub BUILD {
       my $self   = shift;
@@ -78,17 +69,6 @@ seen when this class does its checking.
       }
   }
 
-=head2 Caveats
-
-Using this class replaces the default Moose meta class,
-C<Moose::Meta::Class>, with its own,
-C<MooseX::StrictConstructor::Meta::Class>. If you have your own meta
-class, this distro will probably not work for you.
-
-=head1 AUTHOR
-
-Dave Rolsky, C<< <autarch@urth.org> >>
-
 =head1 BUGS
 
 Please report any bugs or feature requests to
@@ -97,11 +77,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 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