On Fri, Jul 8, 2011 at 6:13 PM, Jesse Luehrs <d...@tozt.net> wrote:
> On Sat, Jul 09, 2011 at 12:10:00AM +0200, Ekki Plicht (DF4OR) wrote:
>> Several attributes of my class should be a bool, but get's thrown at with
>> values like
>> 1, Y, Ja, On for true
>> 0, N, No, Nein, Off. '' (empty string) for false.
>>
>> So I thought that an own subtype + coercion should help here:
>> ----------------
>> subtype 'MyBool',
>>      as 'Str',
>>   where { $_ =~ m/^j|^y|1|^on|^n|0|^off|\A\z/i };
>
> The subtype itself should describe the thing you actually want to end up
> with, not the incoming data (the incoming data is already described in
> the coercion). This should be just "subtype 'MyBool', as 'Bool';".

What doy said.

Specifically you are saying that anything that matches the regular
expression is a valid value. Thus any value passed in that matches
will *not* trigger the coercion. By simply subclassing Moose's built
in Bool you're saying that the only valid states are 1, 0, undef, and
the empty string, and then anything that doesn't match those values
will trigger the coercion.

-Chris

Reply via email to