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( [EMAIL PROTECTED] );
  }
  '... setting array with ok values';

  lives_ok {
    $foo->array_of_foo( [EMAIL PROTECTED] );
  }
  '... setting array with coerced values';

}

Reply via email to