On Fri, 28 Jan 2011 20:23:32 +0100, Jiří Pavlovský <j...@getnet.cz> wrote:
> subtype 'Subject'
> => as 'Str';
> 
> coerce 'Subject'
> => from 'Str'
> => via {
> 
>      my $sanitized = sanitize_input($_);
>      $sanitized;
> 
> };

This will never fire.  Every valid Str is already a valid Subject, so no
coercion will run.

Add a constraint to Subject.

  subtype 'Subject', as 'Str', where { is_clean($_) };
  coerce 'Subject', from 'Str', via { sanitize($_) };

> subtype MaybeSubject => as 'Maybe[Subject]';
> coerce 'MaybeSubject'
> => from 'Subject'
> => via {
>     my $sanitized =sanitize_input($_);
>      $sanitized;
> 
> };

This doesn't make any sense to me.

hdp.

Reply via email to