X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FEmulate%2FClass%2FAccessor%2FFast.pm;h=d2e4ca341b50b1afc528cefc09cdd2ba7863b09f;hb=72ed17b84d08a24f7c9c411db23d5b62da64ced0;hp=4047c0df246efc490e148a2c066b41d3333e2be9;hpb=5e2dfe0a3e5d99f248bbf30df7cd40878fe83f03;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 4047c0d..d2e4ca3 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.00801'; +our $VERSION = '0.00901'; =head1 NAME @@ -76,18 +76,17 @@ my $locate_metaclass = sub { || Moose::Meta::Class->initialize($class); }; -sub BUILD { +sub BUILD { } + +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->$orig(\%args); my @extra = grep { !exists($self->{$_}) } keys %args; @{$self}{@extra} = @args{@extra}; return $self; -} +}; =head2 mk_accessors @field_names @@ -116,7 +115,7 @@ sub mk_accessors { #dont overwrite existing methods if($reader eq $writer){ - my %opts = ( $meta->has_method($reader) ? () : (accessor => $reader) ); + my %opts = ( $meta->has_method($reader) ? ( is => 'bare' ) : (accessor => $reader) ); my $attr = $meta->find_attribute_by_name($attr_name) || $meta->add_attribute($attr_name, %opts, traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'] ); @@ -152,7 +151,7 @@ sub mk_ro_accessors { $meta->remove_attribute($attr_name) if $meta->find_attribute_by_name($attr_name); my $reader = $self->accessor_name_for($attr_name); - my @opts = ($meta->has_method($reader) ? () : (reader => $reader) ); + my @opts = ($meta->has_method($reader) ? (is => 'bare') : (reader => $reader) ); my $attr = $meta->add_attribute($attr_name, @opts, traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'] ) if scalar(@opts); @@ -264,7 +263,8 @@ sub make_accessor { my($class, $field) = @_; my $meta = $locate_metaclass->($class); my $attr = $meta->find_attribute_by_name($field) || $meta->add_attribute($field, - traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'] + traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'], + is => 'bare', ); my $reader = $attr->get_read_method_ref; my $writer = $attr->get_write_method_ref; @@ -280,7 +280,8 @@ sub make_ro_accessor { my($class, $field) = @_; my $meta = $locate_metaclass->($class); my $attr = $meta->find_attribute_by_name($field) || $meta->add_attribute($field, - traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'] + traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'], + is => 'bare', ); return $attr->get_read_method_ref; } @@ -290,7 +291,8 @@ sub make_wo_accessor { my($class, $field) = @_; my $meta = $locate_metaclass->($class); my $attr = $meta->find_attribute_by_name($field) || $meta->add_attribute($field, - traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'] + traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'], + is => 'bare', ); return $attr->get_write_method_ref; }