(Sorry, forgot to reply to all)
On Mon, Jun 14, 2010 at 10:13 PM, Octavian Rasnita <[email protected]> wrote:
> Hello,
>
> I am trying to create a module that accepts a string property as 2010-05-01
> and coerces it to DateTime by default, but that property might be also undef.
>
> I have tried:
If you're happy using MooseX::Types, this is fairly easy:
package Foo;
use Moose;
use DateTime;
use DateTime::Format::Natural;
use MooseX::Types -declare => [qw( DT )];
use MooseX::Types::Moose qw( Maybe Str Undef );
subtype DT, as Maybe[class_type('DateTime')];
coerce DT,
from Str, via { DateTime::Format::Natural->new->parse_datetime($_) };
has start => (is => 'rw', isa => DT, coerce => 1);
package main;
my $foo = Foo->new;
my $date;
#$date = '2010-05-01';
$foo->start($date);
print $foo->start->month_name;
The code still errors, because you can't call month_name on undef, but
that's your problem ;)
--
Oliver Charles / aCiD2