From 716b674a5197f9ec70091c9f3dfa3eabca3bbe9d Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Mon, 31 Jul 2017 15:15:09 -0400 Subject: [PATCH] Revert "LP#1635737 Add optional context to interval_to_seconds" This reverts commit a481100ef9d5bd9eaad5a87ce29776cb07a8687c. --- src/perl/lib/OpenSRF/Utils.pm | 65 +++++++++-------------------------- 1 file changed, 17 insertions(+), 48 deletions(-) diff --git a/src/perl/lib/OpenSRF/Utils.pm b/src/perl/lib/OpenSRF/Utils.pm index 90beb82..bb6858a 100644 --- a/src/perl/lib/OpenSRF/Utils.pm +++ b/src/perl/lib/OpenSRF/Utils.pm @@ -7,7 +7,6 @@ use FileHandle; use Digest::MD5 qw(md5 md5_hex md5_base64); use Exporter; use DateTime; -use DateTime::Duration; use DateTime::Format::ISO8601; use DateTime::TimeZone; @@ -201,7 +200,7 @@ sub noo_es_time { } -=head2 $thing->interval_to_seconds('interval', ['context']) OR interval_to_seconds('interval', ['context']) +=head2 $thing->interval_to_seconds('interval') OR interval_to_seconds('interval') =head2 $thing->seconds_to_interval($seconds) OR seconds_to_interval($seconds) @@ -246,61 +245,31 @@ for months (really (365 * 1d)/12 ... that may get smarter, though) for years (this is 365 * 1d) -Passing in an optional 'context' (DateTime object) will give you the number of seconds for the passed interval *starting from* the given date (e.g. '1 month' from a context of 'February 1' would return the number of seconds needed to get to 'March 1', not the generic calculation of 1/12 of the seconds in a normal year). - =back =cut sub interval_to_seconds { - my $class = shift; # throwaway - my $interval = ($class eq __PACKAGE__) ? shift : $class; - my $context = shift; + my $self = shift; + my $interval = shift || $self; - $interval =~ s/(\d{2}):(\d{2}):(\d{2})/ $1 h $2 min $3 s /go; + $interval =~ s/(\d{2}):(\d{2}):(\d{2})/ $1 h $2 min $3 s /go; - $interval =~ s/and/,/g; - $interval =~ s/,/ /g; + $interval =~ s/and/,/g; + $interval =~ s/,/ /g; - my $amount; - if ($context) { - my $dur = DateTime::Duration->new(); - while ($interval =~ /\s*([\+-]?)\s*(\d+)\s*(\w+)\s*/g) { - my ($sign, $count, $type) = ($1, $2, $3); - my $func = ($sign eq '-') ? 'subtract' : 'add'; - if ($type =~ /^s/) { - $type = 'seconds'; - } elsif ($type =~ /^m(?!o)/oi) { - $type = 'minutes'; - } elsif ($type =~ /^h/) { - $type = 'hours'; - } elsif ($type =~ /^d/oi) { - $type = 'days'; - } elsif ($type =~ /^w/oi) { - $type = 'weeks'; - } elsif ($type =~ /^mo/io) { - $type = 'months'; - } elsif ($type =~ /^y/oi) { - $type = 'years'; - } - $dur->$func($type => $count); - } - my $later = $context->clone->add_duration($dur); - $amount = $later->subtract_datetime_absolute($context)->in_units( 'seconds' ); - } else { - $amount = 0; + my $amount = 0; while ($interval =~ /\s*([\+-]?)\s*(\d+)\s*(\w+)\s*/g) { - my ($sign, $count, $type) = ($1, $2, $3); - $count = "$sign$count" if ($sign); - $amount += $count if ($type =~ /^s/); - $amount += 60 * $count if ($type =~ /^m(?!o)/oi); - $amount += 60 * 60 * $count if ($type =~ /^h/); - $amount += 60 * 60 * 24 * $count if ($type =~ /^d/oi); - $amount += 60 * 60 * 24 * 7 * $count if ($type =~ /^w/oi); - $amount += ((60 * 60 * 24 * 365)/12) * $count if ($type =~ /^mo/io); - $amount += 60 * 60 * 24 * 365 * $count if ($type =~ /^y/oi); + my ($sign, $count, $type) = ($1, $2, $3); + $count = "$sign$count" if ($sign); + $amount += $count if ($type =~ /^s/); + $amount += 60 * $count if ($type =~ /^m(?!o)/oi); + $amount += 60 * 60 * $count if ($type =~ /^h/); + $amount += 60 * 60 * 24 * $count if ($type =~ /^d/oi); + $amount += 60 * 60 * 24 * 7 * $count if ($type =~ /^w/oi); + $amount += ((60 * 60 * 24 * 365)/12) * $count if ($type =~ /^mo/io); + $amount += 60 * 60 * 24 * 365 * $count if ($type =~ /^y/oi); } - } - return $amount; + return $amount; } sub seconds_to_interval { -- 2.43.2