X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-StrictConstructor.git;a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor.pm;h=aa81a45d191336c7b2c2637caee31f2b25715652;hp=69d671c926438e3d3d623765c50491cd0a26dd90;hb=f00a034fe06bd519d9f64f2f942d4ff402d0ae87;hpb=2ffa7b600545d76ba73216e6f158ea47b984fb3e diff --git a/lib/MooseX/StrictConstructor.pm b/lib/MooseX/StrictConstructor.pm index 69d671c..aa81a45 100644 --- a/lib/MooseX/StrictConstructor.pm +++ b/lib/MooseX/StrictConstructor.pm @@ -3,42 +3,37 @@ package MooseX::StrictConstructor; use strict; use warnings; -our $VERSION = '0.01'; +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', 'Moose::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' => ...; @@ -49,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 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 Cthrow_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. - -In that case, you'll probably be writing a C method to deal -with it. Your C method will receive two parameters, the new -object, and a hash reference of parameters passed to the constructor. +You may find yourself wanting to have your constructor accept a +parameter which does not correspond to an attribute. -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 or +C method to deal with that parameter. In a C +method, you can simply make sure that this parameter is not included +in the hash reference you return. Otherwise, in a C method, +you can delete it from the hash reference of parameters. sub BUILD { my $self = shift; @@ -75,10 +69,6 @@ seen when this class does its checking. } } -=head1 AUTHOR - -Dave Rolsky, C<< >> - =head1 BUGS Please report any bugs or feature requests to @@ -87,11 +77,4 @@ interface at L. 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