/usr/share/perl5/Rose/DateTime/Parser.pm is in librose-datetime-perl 0.540-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | package Rose::DateTime::Parser;
use strict;
use Rose::DateTime::Util();
use Rose::Object;
our @ISA = qw(Rose::Object);
use Rose::Object::MakeMethods::Generic
(
scalar => 'error',
'scalar --get_set_init' => 'time_zone',
);
our $VERSION = '0.50';
sub init_time_zone { Rose::DateTime::Util->time_zone }
sub init_european { Rose::DateTime::Util->european_dates }
sub european
{
my($self) = shift;
if(@_)
{
if(defined $_[0])
{
return $self->{'european'} = $_[0] ? 1 : 0;
}
else { $self->{'european'} = undef }
}
return $self->{'european'} if(defined $self->{'european'});
$self->{'european'} = $self->init_european;
}
sub parse_date
{
my($self) = shift;
my $date;
if($self->european)
{
$date = Rose::DateTime::Util::parse_european_date(shift, $self->time_zone);
}
else
{
local $Rose::DateTime::Util::European_Dates = 0;
$date = Rose::DateTime::Util::parse_date(shift, $self->time_zone);
}
return $date if($date);
$self->error(Rose::DateTime::Util->error);
return $date;
}
*parse_datetime = \&parse_date;
sub parse_european_date
{
my($self) = shift;
my $date = Rose::DateTime::Util::parse_european_date(shift, $self->time_zone);
return $date if($date);
$self->error(Rose::DateTime::Util->error);
return $date;
}
1;
__END__
=head1 NAME
Rose::DateTime::Parser - DateTime parser object.
=head1 SYNOPSIS
use Rose::DateTime::Parser;
$parser = Rose::DateTime::Parser->new(time_zone => 'UTC');
$dt = $parser->parse_date('4/30/2001 8am')
or warn $parser->error;
=head1 DESCRIPTION
L<Rose::DateTime::Parser> encapsulates a particular kind of call to L<Rose::DateTime::Util>'s L<parse_date|Rose::DateTime::Util/parse_date> and L<parse_european_date|Rose::DateTime::Util/parse_european_date> functions. The object maintains the desired time zone, which is then passed to each call.
This class inherits from, and follows the conventions of, L<Rose::Object>. See the L<Rose::Object> documentation for more information.
=head1 CONSTRUCTOR
=over 4
=item B<new PARAMS>
Constructs a new L<Rose::DateTime::Parser> object based on PARAMS, where PARAMS are name/value pairs. Any object method is a valid parameter name.
=back
=head1 OBJECT METHODS
=over 4
=item B<error [ERROR]>
Get or set the error message string.
=item B<european [BOOL]>
Get or set a boolean value that controls how the L<parse_date|/parse_date> method will interpret "xx/xx/xxxx" dates: either month/day/year or year/month/day.
If true, then the L<parse_date|/parse_date> method will pass its arguments to L<Rose::DateTime::Util>'s L<parse_european_date|Rose::DateTime::Util/parse_european_date> function, which interprets such dates as "dd/mm/yyyy".
If false, then the L<parse_date|/parse_date> method will temporarily B<force> non-European date parsing and then call L<Rose::DateTime::Util>'s L<parse_date|Rose::DateTime::Util/parse_date> function, which will interpret the date as "mm/dd/yyyy".
This attribute defaults to the value returned by the L<Rose::DateTime::Util-E<gt>european_dates|Rose::DateTime::Util/european_dates> class method called I<at the time the L<Rose::DateTime::Parser> object is constructed>.
If the BOOL argument is undefined (instead of "false, but defined") then the attribute will return to its default value by calling the L<Rose::DateTime::Util-E<gt>european_dates|Rose::DateTime::Util/european_dates> class method again. To unambiguously set the attribute to true or false, pass a defined value like 1 or 0.
=item B<parse_date STRING>
Attempt to parse STRING by passing it to L<Rose::DateTime::Util>'s L<parse_date|Rose::DateTime::Util/parse_date> or L<parse_european_date|Rose::DateTime::Util/parse_european_date> function. The choice is controlled by the L<european|/european> attribute.
If parsing is successful, the resulting L<DateTime> object is returned. Otherwise, L<error|/error> is set and false is returned.
=item B<parse_datetime STRING>
This method is an alias for L<parse_date()|/parse_date>
=item B<parse_european_date STRING>
Attempt to parse STRING by passing it to L<Rose::DateTime::Util>'s L<parse_european_date|Rose::DateTime::Util/parse_european_date> function (regardless of the value of the L<european|/european> attribute). If parsing is successful, the resulting L<DateTime> object is returned. Otherwise, L<error|/error> is set and false is returned.
=item B<time_zone [STRING]>
Get or set the time zone string passed to L<Rose::DateTime::Util>'s L<parse_date|Rose::DateTime::Util/parse_date> function. Defaults to the value returned by the L<Rose::DateTime::Util-E<gt>time_zone|Rose::DateTime::Util/time_zone> class method.
=back
=head1 AUTHOR
John C. Siracusa (siracusa@gmail.com)
=head1 LICENSE
Copyright (c) 2010 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|