summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/Bread/Board/Meta/Role/Accessor.pm
blob: 10748e000c8727a5fa342ba78397f53ec568d94b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package MooseX::Bread::Board::Meta::Role::Accessor;
use Moose::Role;

around _inline_get => sub {
    my $orig = shift;
    my $self = shift;
    my ($instance) = @_;

    my $attr = $self->associated_attribute;

    return 'do {' . "\n"
             . 'my $val;' . "\n"
             . 'if (' . $self->_inline_has($instance) . ') {' . "\n"
                 . '$val = ' . $self->$orig($instance) . ';' . "\n"
             . '}' . "\n"
             . 'else {' . "\n"
                 . '$val = ' . $instance . '->get_service(\'' . $attr->name . '\')->get;' . "\n"
                 . $self->_inline_check_constraint('$val')
             . '}' . "\n"
             . '$val' . "\n"
         . '}';
};

no Moose::Role;

1;