Sorry I had replied out of band (silly Blackberry doesn't default to
reply-to-all) ... MooseX::MultiInitArg does exactly this.


-Chris

On Wed, Nov 26, 2008 at 10:07 AM, Ian Sillitoe
<[EMAIL PROTECTED]> 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
>

Reply via email to