Dan,
Can you provide a complete and runnable example? It would make it
easier to test/debug.
Thanks,
- Stevan
On Jul 16, 2008, at 12:33 PM, Dan Harbin wrote:
This still doesn't seem to work. Maybe it only works by extending the
attribute metaclass rather than applying a role like I'm trying.
Here's the code. Help!
-----------------------
package Demo::Meta::Attribute::Trait::Foo;
use Moose::Role;
has foo => (
is => 'rw',
isa => 'Str',
required => 1,
);
around 'legal_options_for_inheritance' => sub {
my @options = inner();
push @options, 'foo';
return @options;
};
package Moose::Meta::Attribute::Custom::Trait::Foo;
sub register_implementation { 'Demo::Meta::Attribute::Trait::Foo' }
On Wed, Jul 16, 2008 at 10:35 AM, Stevan Little
<[EMAIL PROTECTED]> wrote:
Dan,
Roles don't inherit, so you want 'around' instead of 'override'
sorry, my
fault i used a term that is also a keyword :)
- Stevan
On Jul 16, 2008, at 11:16 AM, Dan Harbin wrote:
Stevan,
I changed the code as follows, and it still fails. This trait
doesn't/can't inherit from Moose::Meta::Attribute, so I think the
override method is a no-op. How do I fix this?
Dan
-----------------
package Demo::Meta::Attribute::Trait::Foo;
use Moose::Role;
has foo => (
is => 'rw',
isa => 'Str',
required => 1,
);
override 'legal_options_for_inheritance' => sub {
my @options = super();
push @options, 'foo';
return @options;
};
package Moose::Meta::Attribute::Custom::Trait::Foo;
sub register_implementation { 'Demo::Meta::Attribute::Trait::Foo' }