X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor%2FRole%2FMeta%2FMethod%2FConstructor.pm;h=43b2aa23bf396996436184755d4dcbf2bb5dd296;hb=df9653e61242b4328f2391e0c5eeb7a5033fe171;hp=335173831e771b72b0f314c5a1697c19f1038e4b;hpb=fbfaa61fd77d92711dd73a1022571b0d09166c88;p=gitmo%2FMooseX-StrictConstructor.git diff --git a/lib/MooseX/StrictConstructor/Role/Meta/Method/Constructor.pm b/lib/MooseX/StrictConstructor/Role/Meta/Method/Constructor.pm index 3351738..43b2aa2 100644 --- a/lib/MooseX/StrictConstructor/Role/Meta/Method/Constructor.pm +++ b/lib/MooseX/StrictConstructor/Role/Meta/Method/Constructor.pm @@ -3,24 +3,24 @@ package MooseX::StrictConstructor::Role::Meta::Method::Constructor; use strict; use warnings; +use B (); use Carp (); use Moose::Role; -around '_generate_BUILDALL' => sub -{ +around '_generate_BUILDALL' => sub { my $orig = shift; my $self = shift; my $source = $self->$orig(); $source .= ";\n" if $source; - my @attrs = - ( map { "$_ => 1," } - grep { defined } - map { $_->init_arg() } - @{ $self->attributes() } - ); + my @attrs = ( + '__INSTANCE__ => 1,', + map { B::perlstring($_) . ' => 1,' } + grep {defined} + map { $_->init_arg() } @{ $self->_attributes() } + ); $source .= <<"EOF"; my \%attrs = (@attrs); @@ -39,17 +39,21 @@ no Moose::Role; 1; +# ABSTRACT: A role to make immutable constructors strict + __END__ =pod -=head1 NAME - -MooseX::StrictConstructor::Role::Meta::Method::Constructor - A role to make immutable constructors strict - =head1 SYNOPSIS - use MooseX::StrictConstructor; + Moose::Util::MetaRole::apply_metaroles( + for_class => $caller, + class => { + constructor => + ['MooseX::StrictConstructor::Role::Meta::Method::Constructor'], + }, + ); =head1 DESCRIPTION @@ -57,16 +61,5 @@ This role simply wraps C<_generate_BUILDALL()> (from C) so that immutable classes have a strict constructor. -=head1 AUTHOR - -Dave Rolsky, C<< >> - -=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