> 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