Re: check arguments for ->new
[email protected] (Paul Driver)
| Newsgroups | perl.moose |
|---|---|
| Message-ID | <[email protected]> |
There's MooseX::MultiInitArg for dealing with the constructor, and
aliasing an accessor would be a fairly simple meta thing via ...
what, alias_method or somesuch? You could do it one better and make
a MooseX::AttributeAlias or something.
On Wed, Nov 26, 2008 at 03:07:26PM +0000, Ian Sillitoe wrote:
> > Any clever idea how I can make an alias attribute?
>
>
> Hmmm... there may be a simple way of doing it but I can't see anything
> obvious on the docs - here's a workaround hack:
>
>
> package My::App;
>
> use Moose;
>
> has 'colour' => (
> is => 'rw',
> isa => 'Str',
> );
>
> sub BUILDARGS {
> my $class = shift;
> my $args = @_ == 1 ? $_[0] : { @_ };
>
> # deal with 'color' in constructor
> if ( exists( $args->{color} ) ) {
> $args->{ colour } = $args->{color};
> delete $args->{ color };
> }
>
> return $args;
> }
>
> # manually setup accessor for color (redirect to colour)
> sub color {
> my $self = shift;
> my $colour = shift;
> $self->colour( $colour ) if @_ > 1;
> return $self->colour;
> }
>
>
> I'm guessing here - but if something like this hasn't already been written
> then I guess you should be able to register your own attribute trait (e.g.
> called 'alias') and deal with it in the BUILD method of the trait role, e.g.
>
>
> http://search.cpan.org/~drolsky/Moose-0.61/lib/Moose/Cookbook/Meta/Recipe3.pod
>
>
> Cheers,
>
> Ian