X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FEmulate%2FClass%2FAccessor%2FFast.pm;h=6700a6bde214867a473fc9646596d52a481d8991;hb=db88e89a4b39274199eadc81789b199b07af339e;hp=9b5db781731d8d37d308120cd09e132aa9751f2c;hpb=736d682294ba29ea7c5817d5be116b5118bf4e5d;p=gitmo%2FMooseX-Emulate-Class-Accessor-Fast.git diff --git a/lib/MooseX/Emulate/Class/Accessor/Fast.pm b/lib/MooseX/Emulate/Class/Accessor/Fast.pm index 9b5db78..6700a6b 100644 --- a/lib/MooseX/Emulate/Class/Accessor/Fast.pm +++ b/lib/MooseX/Emulate/Class/Accessor/Fast.pm @@ -6,7 +6,7 @@ use Scalar::Util (); use MooseX::Emulate::Class::Accessor::Fast::Meta::Accessor (); -our $VERSION = '0.00800'; +our $VERSION = '0.00802'; =head1 NAME @@ -23,9 +23,9 @@ MooseX::Emulate::Class::Accessor::Fast - Emulate Class::Accessor::Fast behavior #fields with readers and writers __PACKAGE__->mk_accessors(qw/field1 field2/); #fields with readers only - __PACKAGE__->mk_accessors(qw/field3 field4/); + __PACKAGE__->mk_ro_accessors(qw/field3 field4/); #fields with writers only - __PACKAGE__->mk_accessors(qw/field5 field6/); + __PACKAGE__->mk_wo_accessors(qw/field5 field6/); =head1 DESCRIPTION @@ -77,17 +77,18 @@ my $locate_metaclass = sub { }; sub BUILD { + shift; +} + +around 'BUILD' => sub { + my $orig = shift; my $self = shift; - my %args; - if (scalar @_ == 1 && defined $_[0] && ref($_[0]) eq 'HASH') { - %args = %{$_[0]}; - } elsif( scalar(@_) ) { - %args = @_; - } + my %args = %{ $_[0] }; + $self = $self->$orig(\%args); my @extra = grep { !exists($self->{$_}) } keys %args; @{$self}{@extra} = @args{@extra}; return $self; -} +}; =head2 mk_accessors @field_names