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