|
Packit |
9002b2 |
package DateTime::Format::Builder::Parser::Strptime;
|
|
Packit |
9002b2 |
{
|
|
Packit |
9002b2 |
$DateTime::Format::Builder::Parser::Strptime::VERSION = '0.81';
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
use strict;
|
|
Packit |
9002b2 |
use warnings;
|
|
Packit |
9002b2 |
use vars qw( @ISA );
|
|
Packit |
9002b2 |
use DateTime::Format::Strptime 1.04;
|
|
Packit |
9002b2 |
use Params::Validate qw( validate SCALAR HASHREF );
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
use DateTime::Format::Builder::Parser::generic;
|
|
Packit |
9002b2 |
@ISA = qw( DateTime::Format::Builder::Parser::generic );
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
__PACKAGE__->valid_params(
|
|
Packit |
9002b2 |
strptime => {
|
|
Packit |
9002b2 |
type => SCALAR
|
|
Packit |
9002b2 |
| HASHREF, # straight pattern or options to DTF::Strptime
|
|
Packit |
9002b2 |
},
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
sub create_parser {
|
|
Packit |
9002b2 |
my ( $self, %args ) = @_;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
# Arguments to DTF::Strptime
|
|
Packit |
9002b2 |
my $pattern = $args{strptime};
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
# Create our strptime parser
|
|
Packit |
9002b2 |
my $strptime = DateTime::Format::Strptime->new(
|
|
Packit |
9002b2 |
( ref $pattern ? %$pattern : ( pattern => $pattern ) ),
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
unless ( ref $self ) {
|
|
Packit |
9002b2 |
$self = $self->new(%args);
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
$self->{strptime} = $strptime;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
# Create our parser
|
|
Packit |
9002b2 |
return $self->generic_parser(
|
|
Packit |
9002b2 |
(
|
|
Packit |
9002b2 |
map { exists $args{$_} ? ( $_ => $args{$_} ) : () }
|
|
Packit |
9002b2 |
qw(
|
|
Packit |
9002b2 |
on_match on_fail preprocess postprocess
|
|
Packit |
9002b2 |
)
|
|
Packit |
9002b2 |
),
|
|
Packit |
9002b2 |
label => $args{label},
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
sub do_match {
|
|
Packit |
9002b2 |
my $self = shift;
|
|
Packit |
9002b2 |
my $date = shift;
|
|
Packit |
9002b2 |
local $^W; # bizarre bug
|
|
Packit |
9002b2 |
# Do the match!
|
|
Packit |
9002b2 |
my $dt = eval { $self->{strptime}->parse_datetime($date) };
|
|
Packit |
9002b2 |
return $@ ? undef : $dt;
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
sub post_match {
|
|
Packit |
9002b2 |
return $_[2];
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
1;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
# ABSTRACT: strptime based date parsing
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
__END__
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=pod
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 NAME
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
DateTime::Format::Builder::Parser::Strptime - strptime based date parsing
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 VERSION
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
version 0.81
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 SYNOPSIS
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
my $parser = DateTime::Format::Builder->create_parser(
|
|
Packit |
9002b2 |
strptime => '%e/%b/%Y:%H:%M:%S %z',
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 SPECIFICATION
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=over 4
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=item *
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
B<strptime> takes as its argument a strptime string.
|
|
Packit |
9002b2 |
See L<DateTime::Format::Strptime> for more information
|
|
Packit |
9002b2 |
on valid patterns.
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=back
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 SUPPORT
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
See L<DateTime::Format::Builder> for details.
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 SEE ALSO
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
C<datetime@perl.org> mailing list.
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
http://datetime.perl.org/
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
L<perl>, L<DateTime>,
|
|
Packit |
9002b2 |
L<DateTime::Format::Builder>
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 AUTHORS
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=over 4
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=item *
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
Dave Rolsky <autarch@urth.org>
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=item *
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
Iain Truskett
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=back
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=head1 COPYRIGHT AND LICENSE
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
This software is Copyright (c) 2013 by Dave Rolsky.
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
This is free software, licensed under:
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
The Artistic License 2.0 (GPL Compatible)
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
=cut
|