my $w3c = DateTime::Format::W3CDTF->new;
my $dt = $w3c->parse_datetime( $date_string );
I wish it was:
my $dt = DateTime::Format::W3CDTF->parse_datetime( $date_string );
and that the library created the parser on the fly as needed. It's not only less typing - but also much simpler mental model. This simpler model is sometimes too simple - for example if you parse a lot of dates then sparing the parser creation each time can make a difference.
I think the optimal thing to do is provide two APIs - like JSON - a functional one:
$perl_hash_or_arrayref = decode_json $utf8_encoded_json_text;
and an object oriented one:
$json = JSON->new->allow_nonref;
$perl_scalar = $json->decode( $json_text );
for those that need that extra control.
3 comments:
my $dt = DateTime::Format::W3CDTF->new->parse_datetime( $date_string );
This creates a parser object, parses the $date_string, returns the DateTime object and destroys the parser object.
But a functional interface will be faster.
The parser object makes sense if you use the same one multiple times.
Thanks - your version is indeed better :)
I'd write my own little function because "DateTime::Format::W3CDTF->new->parse_datetime" is 45 characters.
sub parse_w3cdtf {
my ($date_string) = @_;
state $w3c = DateTime::Format::W3CDTF->new;
return $w3c->parse_datetime($date_string);
}
Post a Comment