mhg
By: a guest | Feb 3rd, 2010 | Syntax:
Perl | Size: 1.21 KB | Hits: 252 | Expires: Never
use Moose;
sub track_master {
my ( $orig, $self, $value ) = @_;
return $self->$orig( $value ) if $value;
my $out = $self->$orig();
return $out->( $self ) if ref $out eq 'CODE';
}
has color => (
is => 'rw',
default => 'red',
);
has line_color => (
is => 'rw',
lazy => 1,
default => sub { sub { $_[0]->color } },
);
around line_color => \&track_master;
has font_color => (
is => 'rw',
lazy => 1,
default => sub { sub { $_[0]->color } },
);
around font_color => \&track_master;
my $t = TestMoose->new;
# Should be red red red
print join ' ', $t->color, $t->line_color, $t->font_color, "\n";
$t->color( 'green' );
# Should be green green green
print join ' ', $t->color, $t->line_color, $t->font_color, "\n";
$t->line_color( 'pink' );
# Should be green pink green
print join ' ', $t->color, $t->line_color, $t->font_color, "\n";
$t->color( 'blue' );
# Should be blue pink blue
print join ' ', $t->color, $t->line_color, $t->font_color, "\n";