This has been brought up before, the short story is 'coerce => 1' may introduce action at a distance, so we decided that if at all this should be 'deep_coerce => 1'.
At any rate, this is a little trickier than it sounds, but if Stevan
approves deep_coerce => 1 feel free to commit this as a todo test
and start hacking away.
Regards,
Yuval
On Thu, Jul 24, 2008 at 15:20:13 -0400, Charles Alderman wrote:
> 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';
>
> }
>
--
Yuval Kogman <[EMAIL PROTECTED]>
http://nothingmuch.woobling.org 0xEBD27418
pgpV6YwMidKyV.pgp
Description: PGP signature
