From: Dave Rolsky Date: Tue, 10 Jan 2012 17:07:15 +0000 (-0600) Subject: Move the eval_environment wrapper to the Class trait from Constructor X-Git-Tag: v0.18~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-StrictConstructor.git;a=commitdiff_plain;h=f00a034fe06bd519d9f64f2f942d4ff402d0ae87 Move the eval_environment wrapper to the Class trait from Constructor --- diff --git a/lib/MooseX/StrictConstructor.pm b/lib/MooseX/StrictConstructor.pm index b45c3f0..aa81a45 100644 --- a/lib/MooseX/StrictConstructor.pm +++ b/lib/MooseX/StrictConstructor.pm @@ -10,14 +10,16 @@ use Moose::Util::MetaRole; use MooseX::StrictConstructor::Trait::Class; use MooseX::StrictConstructor::Trait::Method::Constructor;; -Moose::Exporter->setup_import_methods( - class_metaroles => { - class => ['MooseX::StrictConstructor::Trait::Class'], - constructor => - ['MooseX::StrictConstructor::Trait::Method::Constructor'], - }, +my %metaroles = ( + class => ['MooseX::StrictConstructor::Trait::Class'], ); +$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 diff --git a/lib/MooseX/StrictConstructor/Trait/Class.pm b/lib/MooseX/StrictConstructor/Trait/Class.pm index aea38bd..f032fe5 100644 --- a/lib/MooseX/StrictConstructor/Trait/Class.pm +++ b/lib/MooseX/StrictConstructor/Trait/Class.pm @@ -54,6 +54,24 @@ around _inline_BUILDALL => sub { ); } if $Moose::VERSION >= 1.9900; +around _eval_environment => sub { + my $orig = shift; + my $self = shift; + + my $env = $self->$orig(); + + my %attrs = map { $_ => 1 } + grep { defined } + map { $_->init_arg() } + $self->get_all_attributes(); + + $attrs{__INSTANCE__} = 1; + + $env->{'%allowed_attrs'} = \%attrs; + + return $env; +} if $Moose::VERSION >= 1.9900; + 1; # ABSTRACT: A role to make immutable constructors strict diff --git a/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm b/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm index 15ecf37..219e044 100644 --- a/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm +++ b/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm @@ -31,24 +31,6 @@ EOF return $source; } if $Moose::VERSION < 1.9900; -around _eval_environment => sub { - my $orig = shift; - my $self = shift; - - my $env = $self->$orig(); - - my %attrs = map { $_ => 1 } - grep { defined } - map { $_->init_arg() } - $self->associated_metaclass()->get_all_attributes(); - - $attrs{__INSTANCE__} = 1; - - $env->{'%allowed_attrs'} = \%attrs; - - return $env; -} if $Moose::VERSION >= 1.9900; - 1; # ABSTRACT: A role to make immutable constructors strict