bump version
[gitmo/Moose.git] / lib / Moose / Meta / Method / Accessor / Native / Reader.pm
1 package Moose::Meta::Method::Accessor::Native::Reader;
2
3 use strict;
4 use warnings;
5
6 our $VERSION = '1.23';
7 $VERSION = eval $VERSION;
8 our $AUTHORITY = 'cpan:STEVAN';
9
10 use Moose::Role;
11
12 with 'Moose::Meta::Method::Accessor::Native';
13
14 requires '_return_value';
15
16 sub _generate_method {
17     my $self = shift;
18
19     my $inv = '$self';
20
21     my $code = 'sub {';
22     $code .= "\n" . $self->_inline_pre_body(@_);
23
24     $code .= "\n" . 'my $self = shift;';
25
26     $code .= "\n" . $self->_inline_curried_arguments;
27
28     my $slot_access = $self->_inline_get($inv);
29
30     $code .= "\n" . $self->_reader_core( $inv, $slot_access, @_ );
31
32     $code .= "\n}";
33
34     return $code;
35 }
36
37 sub _reader_core {
38     my ( $self, $inv, $slot_access, @extra ) = @_;
39
40     my $code = q{};
41
42     $code .= "\n" . $self->_inline_check_argument_count;
43     $code .= "\n" . $self->_inline_process_arguments( $inv, $slot_access );
44     $code .= "\n" . $self->_inline_check_arguments;
45
46     $code .= "\n" . $self->_inline_check_lazy($inv);
47     $code .= "\n" . $self->_inline_post_body(@extra);
48     $code .= "\n" . $self->_inline_return_value($slot_access);
49
50     return $code;
51 }
52
53 sub _inline_process_arguments {q{}}
54
55 sub _inline_check_arguments {q{}}
56
57 sub _inline_return_value {
58     my ( $self, $slot_access ) = @_;
59
60     'return ' . $self->_return_value($slot_access) . ';';
61 }
62
63 no Moose::Role;
64
65 1;