X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP%2FAttribute.pm;h=dbdc2dc4c3c94f72d968eb7b9197d211d6b1e42a;hb=5659d76e5bb87873fa7c80efdf1cce8c40d40237;hp=c780a1dbee7fa8b52efa1ae478d48911aeb2f181;hpb=526ba574c9dfda8f386f44c36a7f05d815155deb;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP/Attribute.pm b/lib/Class/MOP/Attribute.pm index c780a1d..dbdc2dc 100644 --- a/lib/Class/MOP/Attribute.pm +++ b/lib/Class/MOP/Attribute.pm @@ -7,7 +7,7 @@ use warnings; use Carp 'confess'; use Scalar::Util 'blessed', 'reftype', 'weaken'; -our $VERSION = '0.02'; +our $VERSION = '0.03'; sub meta { require Class::MOP::Class; @@ -30,11 +30,8 @@ sub new { (defined $name && $name) || confess "You must provide a name for the attribute"; - (!exists $options{reader} && !exists $options{writer}) - || confess "You cannot declare an accessor and reader and/or writer functions" - if exists $options{accessor}; - - $options{init_arg} = $name if not exists $options{init_arg}; + $options{init_arg} = $name + if not exists $options{init_arg}; bless { name => $name, @@ -51,6 +48,19 @@ sub new { } # NOTE: +# this is a primative (and kludgy) clone operation +# for now, it will be repleace in the Class::MOP +# bootstrap with a proper one, however we know +# that this one will work fine for now. +sub clone { + my $self = shift; + my %options = @_; + (blessed($self)) + || confess "Can only clone an instance"; + return bless { %{$self}, %options } => blessed($self); +} + +# NOTE: # the next bunch of methods will get bootstrapped # away in the Class::MOP bootstrapping section @@ -254,6 +264,8 @@ An attribute must (at the very least), have a C<$name>. All other C<%options> are contained added as key-value pairs. Acceptable keys are as follows: +=item B + =over 4 =item I