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';
}