Coercions and custom type parameters

[email protected] (Charles Alderman)
Newsgroups perl.moose
Message-ID <[email protected]>
Hello Moose,

I guess I have an enhancement idea/request.

I have a parametrized ArrayRef[] of a custom type, I'd like my  
coercion on that type to work for any of the values in the collection.  
  HashRef[]s should work too.  Maybe Maybe[]s, but not in my example  
below.

Would this be worthwhile or viable?  If so, I'd be willing to attempt  
a patch...

Thanks,
Charles Alderman


Here's a test:

----

#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 2;
use Test::Exception;

{

   package Foo;
   use Moose;
   use Moose::Util::TypeConstraints;

   enum 'Foo::Values' => qw{ Foo Bar Baz None };
   coerce 'Foo::Values' => from 'Undef' => via { 'None' };

   has 'array_of_foo' => (
     is     => 'rw',
     isa    => 'ArrayRef[Foo::Values]',
     coerce => 1,
   );

}

{
   my $foo = Foo->new();

   my @ok_values = ( 'Foo', 'Bar', 'Baz', 'None' );
   my @coerced_values = ( 'Foo', 'Bar', undef, 'None' );

   lives_ok {
     $foo->array_of_foo( \@ok_values );
   }
   '... setting array with ok values';

   lives_ok {
     $foo->array_of_foo( \@coerced_values );
   }
   '... setting array with coerced values';

}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.