On Mon, 14 Jul 2003, Rick Measham wrote:

> Maybe an example will explain why I want to have an undef DateTime:
>
> print $natural->parse_datetime("Feb 29th, this year")
>       ->set( day => 31 )
>       ->add( days => 12)
>       ->datetime;
>
> Of course, this won't always work because:
> 1. the string "Feb 29th this year" returns undef 75% of the time.
> 2. We can't always set the day to 31, especially in Feb
>
> If I could return DateTime::Undef when it doesn't parse, and if set()
> returned DateTime::Undef if it was out of bounds, then we can turn this
> code:
>
>       $parsed = $natural->parse_datetime("Feb 29th, this year");
>       $parsed->set( day => 31 ) if defined($parsed);
>       $parsed->add(days => 12) if defined($parsed);
>       print $parsed->datetime if defined($parsed);

It hardly has to be this awkward.

 my $parsed = $natural->parse_datetime("Feb 29th, this year");

 if ($parsed) {
     print $parsed->set( day => 31 )->add( days => 12 )->datetime;
 } else {
     # actually be forced to handle failure case, which is good!
 }

I like the idea that code _breaks_ if the date can't be parsed, because
that way programmers have to include explicit paths for handling failure.
This is a _good_ thing, as it encourages better programming practices.


-dave

/*=======================
House Absolute Consulting
www.houseabsolute.com
=======================*/

Reply via email to