34e1f7d6a53a3961b0a76ab63643c432e832f8c2
[gitmo/MooseX-SemiAffordanceAccessor.git] / lib / MooseX / SemiAffordanceAccessor / Role / Attribute.pm
1 package MooseX::SemiAffordanceAccessor::Role::Attribute;
2
3 use strict;
4 use warnings;
5
6 use Moose::Role;
7
8
9 before '_process_options' => sub
10 {
11     my $class   = shift;
12     my $name    = shift;
13     my $options = shift;
14
15     if ( exists $options->{is} &&
16          ! ( exists $options->{reader} || exists $options->{writer} ) )
17     {
18         if ( $options->{is} eq 'ro' )
19         {
20             $options->{reader} = $name;
21         }
22         elsif ( $options->{is} eq 'rw' )
23         {
24             $options->{reader} = $name;
25
26             my $prefix = 'set';
27             if ( $name =~ s/^_// )
28             {
29                 $prefix = '_set';
30             }
31
32             $options->{writer} = $prefix . q{_} . $name;
33         }
34
35         delete $options->{is};
36     }
37 };
38
39 no Moose::Role;
40
41 1;