Hello community, here is the log from the commit of package perl-DateTime-Format-Flexible for openSUSE:Factory checked in at 2019-09-18 13:11:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-DateTime-Format-Flexible (Old) and /work/SRC/openSUSE:Factory/.perl-DateTime-Format-Flexible.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-DateTime-Format-Flexible" Wed Sep 18 13:11:45 2019 rev:2 rq:731458 version:0.32 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-DateTime-Format-Flexible/perl-DateTime-Format-Flexible.changes 2019-05-06 21:16:38.444977463 +0200 +++ /work/SRC/openSUSE:Factory/.perl-DateTime-Format-Flexible.new.7948/perl-DateTime-Format-Flexible.changes 2019-09-18 13:11:50.452684837 +0200 @@ -1,0 +2,15 @@ +Mon Sep 16 12:12:53 UTC 2019 - <timueller+p...@suse.de> + +- updated to 0.32 + see /usr/share/doc/packages/perl-DateTime-Format-Flexible/Changes + + 0.32 Sat Sep 14 2019 + - add support for offset timezones without a space separator and formatted HH:MM '2019-09-03T10:42:00.000-04:00' + - thanks Stijn Heymans + - allow negative timezone offsets in 2 and 4 digit lengths with and without spaces + - now works: 2007-05-06T04:44:44-0800 + - now works: 2007-05-06T04:44:44-08 + - now works: 2007-05-06T04:44:44 -08 + - validate all timezone offsets + +------------------------------------------------------------------- Old: ---- DateTime-Format-Flexible-0.31.tar.gz New: ---- DateTime-Format-Flexible-0.32.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-DateTime-Format-Flexible.spec ++++++ --- /var/tmp/diff_new_pack.mLbFv4/_old 2019-09-18 13:11:50.996684723 +0200 +++ /var/tmp/diff_new_pack.mLbFv4/_new 2019-09-18 13:11:51.000684722 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-DateTime-Format-Flexible # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: perl-DateTime-Format-Flexible -Version: 0.31 +Version: 0.32 Release: 0 %define cpan_name DateTime-Format-Flexible Summary: DateTime::Format::Flexible - Flexibly parse strings and turn them into D[cut] @@ -57,11 +57,11 @@ %setup -q -n %{cpan_name}-%{version} %build -%{__perl} Makefile.PL INSTALLDIRS=vendor -%{__make} %{?_smp_mflags} +perl Makefile.PL INSTALLDIRS=vendor +make %{?_smp_mflags} %check -%{__make} test +make test %install %perl_make_install ++++++ DateTime-Format-Flexible-0.31.tar.gz -> DateTime-Format-Flexible-0.32.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DateTime-Format-Flexible-0.31/Changes new/DateTime-Format-Flexible-0.32/Changes --- old/DateTime-Format-Flexible-0.31/Changes 2018-09-17 10:35:04.000000000 +0200 +++ new/DateTime-Format-Flexible-0.32/Changes 2019-09-14 11:09:37.000000000 +0200 @@ -1,5 +1,14 @@ Revision history for Perl module DateTime::Format::Flexible +0.32 Sat Sep 14 2019 + - add support for offset timezones without a space separator and formatted HH:MM '2019-09-03T10:42:00.000-04:00' + - thanks Stijn Heymans + - allow negative timezone offsets in 2 and 4 digit lengths with and without spaces + - now works: 2007-05-06T04:44:44-0800 + - now works: 2007-05-06T04:44:44-08 + - now works: 2007-05-06T04:44:44 -08 + - validate all timezone offsets + 0.31 Mon Sep 17 2018 - add support for Sep 10, 2018 12:58, Sep 10, 18 12:58 - thanks Ian! D. Allen @@ -46,7 +55,6 @@ - when we have a leading month that is 0 (zero) and we have a year, assume it is supposed to be october (10) - thanks Dave Musakhanyan - 0.26 Tue Apr 22 2014 - support "MM/DD/YYYY HH:MM" (missing seconds), - support "EEE MMM dd HH:mm:ss z yyyy" (UTC timezone inside string) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DateTime-Format-Flexible-0.31/META.json new/DateTime-Format-Flexible-0.32/META.json --- old/DateTime-Format-Flexible-0.31/META.json 2018-09-17 10:49:46.000000000 +0200 +++ new/DateTime-Format-Flexible-0.32/META.json 2019-09-14 11:44:38.000000000 +0200 @@ -45,6 +45,6 @@ } }, "release_status" : "stable", - "version" : "0.31", + "version" : "0.32", "x_serialization_backend" : "JSON::PP version 2.27300_01" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DateTime-Format-Flexible-0.31/META.yml new/DateTime-Format-Flexible-0.32/META.yml --- old/DateTime-Format-Flexible-0.31/META.yml 2018-09-17 10:49:46.000000000 +0200 +++ new/DateTime-Format-Flexible-0.32/META.yml 2019-09-14 11:44:38.000000000 +0200 @@ -27,5 +27,5 @@ DateTime::TimeZone: '0' List::MoreUtils: '0' Module::Pluggable: '0' -version: '0.31' +version: '0.32' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DateTime-Format-Flexible-0.31/lib/DateTime/Format/Flexible.pm new/DateTime-Format-Flexible-0.32/lib/DateTime/Format/Flexible.pm --- old/DateTime-Format-Flexible-0.31/lib/DateTime/Format/Flexible.pm 2018-09-17 10:35:56.000000000 +0200 +++ new/DateTime-Format-Flexible-0.32/lib/DateTime/Format/Flexible.pm 2019-09-14 11:41:22.000000000 +0200 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = '0.31'; +our $VERSION = '0.32'; use base 'DateTime::Format::Builder'; @@ -614,29 +614,121 @@ } # set any trailing offset timezones - if ( my ( $tz ) = $date =~ m{((?:\s+)?\+\d{2,4}|\s+\-\d{4})\.?\z}mx ) - { - $date =~ s{\Q$tz\E}{}; + if ( my ( $tz ) = $date =~ m{( + (?:\s+)?\+\d{2,4} # ' +04', '+04' + |\s+\-\d{4} # ' -0400' + |(?:\s+)?[-+]\d{2}:\d{2} # '-04:00', '+04:00' + )\.?\z}mx ) + { + printf( "# possible timezone (%s) in (%s)\n", $tz, $date) if $ENV{DFF_DEBUG}; + my $original_tz = $tz; + $tz =~ s{:}{}; # some timezones are 2 digit hours, add the minutes part $tz = _clean_whitespace( $tz ); $tz .= '00' if ( length( $tz ) == 3 ); - $p->{time_zone} = $tz; - return ( $date , $p ); + if ( _is_valid_tz_offset( $tz ) ) + { + printf( "# timezone matched (%s)\n" , $tz ) if $ENV{DFF_DEBUG}; + $date =~ s{\Q$original_tz\E\.?\z}{}; + $p->{time_zone} = $tz; + return ( $date , $p ); + } + } + + if ( length( $date ) > 15 and ($date =~ m{\dT\d} or $date =~ m{\d\s\d})) + { + # this pattern conflicts with 5-08, 01-02-03, 08-Jan-99, 2006-Dec-08 + # so we need to check the length and make sure it is long enough to be + # a full iso datetime, and that is has a 'T' or ' ' (space) surrounded by digits + if ( my ( $tz ) = $date =~ m{( + (?:\s+)?[-+]\d{2,4} # '-0800', '-08', ' -08' + )\.?\z}mx ) + { + printf( "# possible timezone (%s) in (%s)\n", $tz, $date) if $ENV{DFF_DEBUG}; + my $original_tz = $tz; + $tz =~ s{:}{}; + # some timezones are 2 digit hours, add the minutes part + $tz = _clean_whitespace( $tz ); + $tz .= '00' if ( length( $tz ) == 3 ); + if ( _is_valid_tz_offset( $tz ) ) + { + $date =~ s{\Q$original_tz\E\.?\z}{}; + $p->{time_zone} = $tz; + return ( $date , $p ); + } + } } # search for positive/negative 4 digit timezones that are inside the string # must be surrounded by spaces # Mon Apr 05 17:25:35 +0000 2010 - if ( my ( $tz ) = $date =~ m{\s([\+\-]\d{4})\s}mx ) - { - $date =~ s{\Q$tz\E}{}; - $p->{time_zone} = $tz; - return ( $date , $p ); + if ( my ( $tz ) = $date =~ m{\s( + [-+]\d{4} # Mon Apr 05 17:25:35 +0000 2010 + |[-+]\d{2}:\d{2} # Mon Apr 05 17:25:35 +00:00 2010 + )\s}mx ) + { + my $original_tz = $tz; + $tz =~ s{:}{}; + if ( _is_valid_tz_offset( $tz ) ) + { + $date =~ s{\Q$original_tz\E}{}; + $p->{time_zone} = $tz; + return ( $date , $p ); + } } return ( $date , $p ); } +sub _is_valid_tz_offset +{ + my ($offset) = @_; + + # https://en.wikipedia.org/wiki/List_of_UTC_time_offsets + my $valid = { + '-1200' => 1, + '-1100' => 1, + '-1000' => 1, + '-0930' => 1, + '-0900' => 1, + '-0800' => 1, + '-0700' => 1, + '-0600' => 1, + '-0500' => 1, + '-0400' => 1, + '-0330' => 1, + '-0300' => 1, + '-0200' => 1, + '-0100' => 1, + '-0000' => 1, + '+0000' => 1, + '+0100' => 1, + '+0200' => 1, + '+0300' => 1, + '+0330' => 1, + '+0400' => 1, + '+0430' => 1, + '+0500' => 1, + '+0530' => 1, + '+0545' => 1, + '+0600' => 1, + '+0630' => 1, + '+0700' => 1, + '+0800' => 1, + '+0845' => 1, + '+0900' => 1, + '+0930' => 1, + '+1000' => 1, + '+1030' => 1, + '+1100' => 1, + '+1200' => 1, + '+1245' => 1, + '+1300' => 1, + '+1400' => 1, + }; + return exists $valid->{$offset}; +} + sub _do_math { my ( $string ) = @_; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DateTime-Format-Flexible-0.31/t/timezones.t new/DateTime-Format-Flexible-0.32/t/timezones.t --- old/DateTime-Format-Flexible-0.31/t/timezones.t 2017-03-07 19:12:00.000000000 +0100 +++ new/DateTime-Format-Flexible-0.32/t/timezones.t 2019-09-14 11:10:51.000000000 +0200 @@ -21,7 +21,7 @@ { my $dt = DateTime::Format::Flexible->parse_datetime( '2009-10-06 GMT.' , strip => qr{\.\z} ); is( $dt->datetime , '2009-10-06T00:00:00' , 'GMT. timezone parsed/stripped' ); - is( $dt->time_zone->name , 'UTC' , 'GMT. timezone set correctly' ); + is( $dt->time_zone->name , 'UTC' , 'GMT. timezone set correctly to UTC' ); } { @@ -30,7 +30,7 @@ is( $dt->time_zone->name , '+0900' , '+09. timezone set correctly' ); } -foreach my $tz ( DateTime::TimeZone->all_names ) +foreach my $tz ( @TZS ) { my $dt = DateTime::Format::Flexible->parse_datetime( '2010-01-24T04:58:23 '.$tz ); is( $dt->datetime , '2010-01-24T04:58:23' , "$tz parsed" ); @@ -69,9 +69,39 @@ 2010-02-02 12:06:45+09. => 2010-02-02T12:06:45 => +0900 2009-05-21 01:27:48+09. => 2009-05-21T01:27:48 => +0900 2010-08-01 14:25:14+09. => 2010-08-01T14:25:14 => +0900 +2016-08-23 01:56:57-09. => 2016-08-23T01:56:57 => -0900 +2012-04-13 23:33:44-09. => 2012-04-13T23:33:44 => -0900 +2014-02-23 17:48:32-09. => 2014-02-23T17:48:32 => -0900 +2011-06-08 13:00:00-09. => 2011-06-08T13:00:00 => -0900 +2013-09-20 02:25:41-09. => 2013-09-20T02:25:41 => -0900 +2010-01-07 11:42:46-09. => 2010-01-07T11:42:46 => -0900 +2012-01-06 14:00:00-09. => 2012-01-06T14:00:00 => -0900 +2009-07-28 19:04:26-09. => 2009-07-28T19:04:26 => -0900 +2010-03-18 14:00:00-09. => 2010-03-18T14:00:00 => -0900 +2009-11-17 11:27:58-09. => 2009-11-17T11:27:58 => -0900 +2010-02-14 20:42:33-09. => 2010-02-14T20:42:33 => -0900 +2013-04-14 13:00:00-09. => 2013-04-14T13:00:00 => -0900 +2010-02-02 12:06:45-09. => 2010-02-02T12:06:45 => -0900 +2009-05-21 01:27:48-09. => 2009-05-21T01:27:48 => -0900 +2010-08-01 14:25:14-09. => 2010-08-01T14:25:14 => -0900 Mon Apr 05 17:25:35 +0000 2010 => 2010-04-05T17:25:35 => UTC Mon Apr 05 17:25:35 +0100 2010 => 2010-04-05T17:25:35 => +0100 Mon Apr 05 17:25:35 -0100 2010 => 2010-04-05T17:25:35 => -0100 +Mon Apr 05 17:25:35 +00:00 2010 => 2010-04-05T17:25:35 => UTC +Mon Apr 05 17:25:35 +01:00 2010 => 2010-04-05T17:25:35 => +0100 +Mon Apr 05 17:25:35 -01:00 2010 => 2010-04-05T17:25:35 => -0100 2010-08-01 14:25:14 +09:00 => 2010-08-01T14:25:14 => +0900 2010-08-01 14:25:14 -06:00 => 2010-08-01T14:25:14 => -0600 00241121 America/Chicago => 0024-11-21T00:00:00 => America/Chicago +2019-09-03T10:42:00.000-04:00 => 2019-09-03T10:42:00 => -0400 +2019-09-03T10:42:00.000+04:00 => 2019-09-03T10:42:00 => +0400 +2007-05-06T04:44:44-08 => 2007-05-06T04:44:44 => -0800 +2007-05-06T04:44:44-0800 => 2007-05-06T04:44:44 => -0800 +2007-05-06T04:44:44 -08 => 2007-05-06T04:44:44 => -0800 +2007-05-06T04:44:44+08 => 2007-05-06T04:44:44 => +0800 +2007-05-06T04:44:44+0800 => 2007-05-06T04:44:44 => +0800 +2007-05-06T04:44:44 +08 => 2007-05-06T04:44:44 => +0800 +2007-05-06T04:44:44-08:00 => 2007-05-06T04:44:44 => -0800 +2007-05-06T04:44:44+08:00 => 2007-05-06T04:44:44 => +0800 +2007-05-06T04:44:44 -08:00 => 2007-05-06T04:44:44 => -0800 +2007-05-06T04:44:44 +08:00 => 2007-05-06T04:44:44 => +0800