Blame internal/gen_dm5abbrevs

Packit 95306a
#!/usr/bin/perl -w
Packit 95306a
# Copyright (c) 2010-2017 Sullivan Beck.  All rights reserved.
Packit 95306a
# This program is free software; you can redistribute it and/or modify it
Packit 95306a
# under the same terms as Perl itself.
Packit 95306a
Packit 95306a
###############################################################################
Packit 95306a
###############################################################################
Packit 95306a
# This script is used to automatically generate the Date::Manip::DM5abbrevs
Packit 95306a
# modeul used in Date::Manip 5.xx .
Packit 95306a
Packit 95306a
use lib "./lib";
Packit 95306a
Packit 95306a
require 5.010000;
Packit 95306a
use strict;
Packit 95306a
use warnings;
Packit 95306a
Packit 95306a
use Date::Manip::Zones;
Packit 95306a
use Date::Manip::TZ;
Packit 95306a
Packit 95306a
our($VERSION);
Packit 95306a
$VERSION='6.60';
Packit 95306a
Packit 95306a
our($DEBUG);
Packit 95306a
$DEBUG = 0;
Packit 95306a
Packit 95306a
our(@keep);
Packit 95306a
@keep = qw(
Packit 95306a
      idlw   -1200
Packit 95306a
      nt     -1100
Packit 95306a
      sat    -0400
Packit 95306a
      cldt   -0300
Packit 95306a
      at     -0200
Packit 95306a
      utc    +0000
Packit 95306a
      mewt   +0100
Packit 95306a
      mez    +0100
Packit 95306a
      fwt    +0100
Packit 95306a
      gb     +0100
Packit 95306a
      swt    +0100
Packit 95306a
      mesz   +0200
Packit 95306a
      fst    +0200
Packit 95306a
      metdst +0200
Packit 95306a
      eetdst +0300
Packit 95306a
      eetedt +0300
Packit 95306a
      bt     +0300
Packit 95306a
      it     +0330
Packit 95306a
      zp4    +0400
Packit 95306a
      zp5    +0500
Packit 95306a
      ist    +0530
Packit 95306a
      zp6    +0600
Packit 95306a
      awst   +0800
Packit 95306a
      rok    +0900
Packit 95306a
      aest   +1000
Packit 95306a
      acdt   +1030
Packit 95306a
      cadt   +1030
Packit 95306a
      aedt   +1100
Packit 95306a
      eadt   +1100
Packit 95306a
      nzt    +1200
Packit 95306a
      idle   +1200
Packit 95306a
         );
Packit 95306a
Packit 95306a
############################################################################
Packit 95306a
# MAIN PROGRAM
Packit 95306a
############################################################################
Packit 95306a
Packit 95306a
my $year = ( localtime(time) )[5] + 1900;
Packit 95306a
my $tz   = new Date::Manip::TZ;
Packit 95306a
Packit 95306a
my $podstr = '=pod';    # so the CPAN indexer won't treat this as a POD file
Packit 95306a
Packit 95306a
print "package Date::Manip::DM5abbrevs;
Packit 95306a
# Copyright (c) 2003-$year Sullivan Beck. All rights reserved.
Packit 95306a
# This program is free software; you can redistribute it and/or modify it
Packit 95306a
# under the same terms as Perl itself.
Packit 95306a
Packit 95306a
########################################################################
Packit 95306a
########################################################################
Packit 95306a
Packit 95306a
$podstr
Packit 95306a
Packit 95306a
=head1 NAME
Packit 95306a
Packit 95306a
Date::Manip::DM5abbrevs - A list of all timezone abbreviations
Packit 95306a
Packit 95306a
=head1 SYNPOSIS
Packit 95306a
Packit 95306a
This module is not intended to be used directly. Date::Manip 5.xx
Packit 95306a
will load it as needed.
Packit 95306a
Packit 95306a
This module contains all of the time zone abbreviations from
Packit 95306a
Date::Manip 6.xx copied backwards to 5.xx to provide slightly
Packit 95306a
better support for time zones.
Packit 95306a
Packit 95306a
Note that this is only a bandaid fix, and does not add proper
Packit 95306a
time zone handling to version 5.xx .
Packit 95306a
Packit 95306a
=cut
Packit 95306a
Packit 95306a
require 5.000;
Packit 95306a
Packit 95306a
use strict;
Packit 95306a
use warnings;
Packit 95306a
Packit 95306a
our(\$VERSION);
Packit 95306a
\$VERSION='6.60';
Packit 95306a
Packit 95306a
END {
Packit 95306a
   my \$tmp;
Packit 95306a
   \$tmp = \\\$Date::Manip::DM5::Abbrevs;
Packit 95306a
}
Packit 95306a
Packit 95306a
\$Date::Manip::DM5::Abbrevs = join(' ',qw(
Packit 95306a
";
Packit 95306a
Packit 95306a
my @tmp = @keep;
Packit 95306a
my %off;
Packit 95306a
while (@tmp) {
Packit 95306a
   my($abb) = shift(@tmp);
Packit 95306a
   my($off) = shift(@tmp);
Packit 95306a
   $off{$abb} = $off;
Packit 95306a
   print "      $abb" . " "x(6-length($abb)) . " $off\n";
Packit 95306a
}
Packit 95306a
print "\n";
Packit 95306a
Packit 95306a
# We have to come up with the best offset for each abbreviation.
Packit 95306a
#
Packit 95306a
# We'll look first at values in the current year.
Packit 95306a
# Then we'll look back in time.
Packit 95306a
Packit 95306a
ABBREV: foreach my $abbrev (sort keys %Date::Manip::Zones::Abbrev) {
Packit 95306a
   my @zone = @{ $Date::Manip::Zones::Abbrev{$abbrev} };
Packit 95306a
Packit 95306a
   foreach my $zone (@zone) {
Packit 95306a
      my @period = $tz->all_periods($zone,$year);
Packit 95306a
      foreach my $period (@period) {
Packit 95306a
         my @per = @$period;
Packit 95306a
         my $abb = lc($per[4]);
Packit 95306a
         next  if ($abb ne $abbrev);
Packit 95306a
         my $off = $per[3];
Packit 95306a
         my ($h,$m,$s) = @$off;
Packit 95306a
         $h += 0;
Packit 95306a
         next  if ($s != 0);
Packit 95306a
Packit 95306a
         my $sign;
Packit 95306a
         if ($h < 0) {
Packit 95306a
            $h *= -1;
Packit 95306a
            $m *= -1;
Packit 95306a
            $sign = "-";
Packit 95306a
         } else {
Packit 95306a
            $sign = "+";
Packit 95306a
         }
Packit 95306a
         $h = "0$h"  if (length($h) == 1);
Packit 95306a
         $m = "0$m"  if (length($m) == 1);
Packit 95306a
         $off = "$sign$h$m";
Packit 95306a
Packit 95306a
         print "      $abb" . " "x(6-length($abb)) . " $off\n";
Packit 95306a
         $off{$abb} = $off;
Packit 95306a
         next ABBREV;
Packit 95306a
      }
Packit 95306a
   }
Packit 95306a
Packit 95306a
   # If we've arrived here, we didn't find the abbreviation in
Packit 95306a
   # the current year, so we need to go back in time.
Packit 95306a
Packit 95306a
   my $best_off  = "";
Packit 95306a
   my $best_date = "0001010100:00:00";
Packit 95306a
Packit 95306a
   print ":: Abbrev = $abbrev...\n"  if ($DEBUG);
Packit 95306a
Packit 95306a
 ZONE:foreach my $zone (@zone) {
Packit 95306a
      my @period = $tz->periods($zone,undef,$year);
Packit 95306a
      while (@period) {
Packit 95306a
         my $period = pop(@period);
Packit 95306a
Packit 95306a
         my @per  = @$period;
Packit 95306a
         my $date = $per[10];
Packit 95306a
         my $abb  = lc($per[4]);
Packit 95306a
         next  if ($abb ne $abbrev);
Packit 95306a
         my $off = $per[3];
Packit 95306a
         my ($h,$m,$s) = @$off;
Packit 95306a
         $h += 0;
Packit 95306a
         next  if ($s != 0);
Packit 95306a
Packit 95306a
         my $sign;
Packit 95306a
         if ($h < 0  ||
Packit 95306a
             ($h == 0  &&  $m < 0)) {
Packit 95306a
            $h *= -1;
Packit 95306a
            $m *= -1;
Packit 95306a
            $sign = "-";
Packit 95306a
         } else {
Packit 95306a
            $sign = "+";
Packit 95306a
         }
Packit 95306a
         $h = "0$h"  if (length($h) == 1);
Packit 95306a
         $m = "0$m"  if (length($m) == 1);
Packit 95306a
Packit 95306a
         if ($date lt $best_date) {
Packit 95306a
            print "::     $zone => $best_off [ $best_date ]\n"  if ($DEBUG);
Packit 95306a
            next ZONE;
Packit 95306a
         }
Packit 95306a
Packit 95306a
         $best_off = "$sign$h$m";
Packit 95306a
         $best_date = $date;
Packit 95306a
Packit 95306a
         print "::     $zone => $best_off [ $best_date ] ***\n"  if ($DEBUG);
Packit 95306a
         next ZONE;
Packit 95306a
      }
Packit 95306a
   }
Packit 95306a
Packit 95306a
   if ($best_off) {
Packit 95306a
      $off{$abbrev} = $best_off;
Packit 95306a
      print "      $abbrev" . " "x(6-length($abbrev)) . " $best_off\n";
Packit 95306a
   }
Packit 95306a
   next ABBREV;
Packit 95306a
}
Packit 95306a
Packit 95306a
print "));
Packit 95306a
Packit 95306a
$podstr
Packit 95306a
Packit 95306a
=head1 TIMEZONES
Packit 95306a
Packit 95306a
The following timezones are defined:
Packit 95306a
Packit 95306a
";
Packit 95306a
Packit 95306a
foreach my $abb (sort keys %off) {
Packit 95306a
   my $off = $off{$abb};
Packit 95306a
   print "      " . uc($abb) . " "x(6-length($abb)) . " $off\n";
Packit 95306a
}
Packit 95306a
Packit 95306a
print "
Packit 95306a
Packit 95306a
=head1 LICENSE
Packit 95306a
Packit 95306a
This script is free software; you can redistribute it and/or modify it
Packit 95306a
under the same terms as Perl itself.
Packit 95306a
Packit 95306a
=head1 AUTHOR
Packit 95306a
Packit 95306a
Sullivan Beck (sbeck\@cpan.org)
Packit 95306a
Packit 95306a
=cut
Packit 95306a
Packit 95306a
1;
Packit 95306a
";
Packit 95306a
Packit 95306a
# Local Variables:
Packit 95306a
# mode: cperl
Packit 95306a
# indent-tabs-mode: nil
Packit 95306a
# cperl-indent-level: 3
Packit 95306a
# cperl-continued-statement-offset: 2
Packit 95306a
# cperl-continued-brace-offset: 0
Packit 95306a
# cperl-brace-offset: 0
Packit 95306a
# cperl-brace-imaginary-offset: 0
Packit 95306a
# cperl-label-offset: 0
Packit 95306a
# End: