{
package My::Meta::Attribute::DefaultReadOnly;
use Moose;
-
+
extends 'Moose::Meta::Attribute';
-
+
around 'new' => sub {
my $next = shift;
my ($self, $name, %options) = @_;
- $options{is} = 'ro'
+ $options{is} = 'ro'
unless exists $options{is};
$next->($self, $name, %options);
- };
+ };
}
{
package My::Attribute::Trait;
use Moose::Role;
-
+
has 'alias_to' => (is => 'ro', isa => 'Str');
-
+
after 'install_accessors' => sub {
my $self = shift;
$self->associated_class->add_method(
- $self->alias_to,
+ $self->alias_to,
$self->get_read_method_ref
);
};
{
package My::Class;
use Moose;
-
+
has 'bar' => (
metaclass => 'My::Meta::Attribute::DefaultReadOnly',
traits => [qw/My::Attribute::Trait/],