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

Attachment: pgpV6YwMidKyV.pgp
Description: PGP signature

Reply via email to