X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FIsDefaults%2FMeta%2FIsRW.pm;fp=lib%2FMooseX%2FIsDefaults%2FMeta%2FIsRW.pm;h=ce692e6b81f4553e8aae8f61985abb88f5d19a86;hb=253cd18c48452459130a9a23fdc4026b38c73216;hp=0000000000000000000000000000000000000000;hpb=d769b5784d36d8ff275927590a329d4a999b9206;p=gitmo%2FMooseX-IsDefaults.git diff --git a/lib/MooseX/IsDefaults/Meta/IsRW.pm b/lib/MooseX/IsDefaults/Meta/IsRW.pm new file mode 100644 index 0000000..ce692e6 --- /dev/null +++ b/lib/MooseX/IsDefaults/Meta/IsRW.pm @@ -0,0 +1,25 @@ +package MooseX::IsDefaults::Meta::IsRW; +use Moose::Role; + +# This does not actually do anything but lie less in the attribute's metadata. +has '+is' => ( + default => 'rw', +); + +around _process_options => sub { + my $orig = shift; + my (undef, undef, $options) = @_; + + if (!exists($options->{is})) { + $options->{is} = 'rw'; + } + # They want no accessor, but Moose doesn't like "is => undef" + elsif (!defined($options->{is})) { + delete $options->{is}; + } + + $orig->(@_); +}; + +1; +