Blob Blame History Raw
#!/usr/bin/perl -w

use lib "./lib";
use IO::File;
use YAML::Syck qw(LoadFile DumpFile);
use Locale::Codes::Constants;
use Locale::Codes::Country_Retired;
use Locale::Codes::Language_Retired;
use Locale::Codes::Currency_Retired;
use Locale::Codes::Script_Retired;
use Locale::Codes::LangExt_Retired;
use Locale::Codes::LangVar_Retired;

############################################################################

our %mod_list = qw(country     Country
                   currency    Currency
                   langext     LangExt
                   langvar     LangVar
                   language    Language
                   script      Script
                 );

our $curr    = "internal/curr.yaml";
our $prev    = "internal/prev.yaml";

our %curr    = %{ LoadFile($curr) };
our %prev    = %{ LoadFile($prev) };

our $mod_dir = "lib/Locale/Codes";

############################################################################
############################################################################

foreach my $type (keys %mod_list) {
   update_retired($type);
   write_module($type);
}

############################################################################
# UPDATE_MODULE
############################################################################

sub update_retired {
   my($type)  = @_;
   my $module = $mod_list{$type};

   foreach my $codeset (keys %{ $ALL_CODESETS{$type}{'codesets'} }) {
      foreach my $code (keys %{ $prev{$type}{$codeset}{'code'} }) {
         next  if (exists $curr{$type}{$codeset}{'code'}{$code});
         my $name = $prev{$type}{$codeset}{'code'}{$code};

         $Locale::Codes::Retired{$type}{$codeset}{'code'}{$code} = $name;
      }

      foreach my $lc (keys %{ $prev{$type}{$codeset}{'name'} }) {
         next  if (exists $curr{$type}{$codeset}{'name'}{$lc});
         my($code,$name) = @{ $prev{$type}{$codeset}{'name'}{$lc} };

         $Locale::Codes::Retired{$type}{$codeset}{'name'}{$lc} =
           [$code,$name];
      }
   }
}

############################################################################
# WRITE_MODULE
############################################################################

sub write_module {
   my($type)  = @_;
   my $module = $mod_list{$type};

   my $file   = "$mod_dir/${module}_Retired.pm";

   my $out    = new IO::File;
   $out->open(">$file");
   my $timestamp   = `date`;
   chomp($timestamp);

   print $out "package #
Locale::Codes::${module}_Retired;

# This file was automatically generated.  Any changes to this file will
# be lost the next time 'deprecate_codes' is run.
#    Generated on: $timestamp

use strict;
require 5.006;
use warnings;
use utf8;

our(\$VERSION);
\$VERSION='3.57';

";

   foreach my $codeset (sort keys %{ $ALL_CODESETS{$type}{'codesets'} }) {
      print $out "\$Locale::Codes::Retired{'$type'}{'$codeset'}{'code'} = {\n";
      foreach my $code (sort keys %{ $Locale::Codes::Retired{$type}{$codeset}{'code'} }) {
         my $name = $Locale::Codes::Retired{$type}{$codeset}{'code'}{$code};
         print $out "   q($code) => q($name),\n";
      }
      print $out "};\n\n";
   }

   foreach my $codeset (sort keys %{ $ALL_CODESETS{$type}{'codesets'} }) {
      print $out "\$Locale::Codes::Retired{'$type'}{'$codeset'}{'name'} = {\n";
      foreach my $lc (sort keys %{ $Locale::Codes::Retired{$type}{$codeset}{'name'} }) {
         my ($code,$name) =
           @{ $Locale::Codes::Retired{$type}{$codeset}{'name'}{$lc} };
         print $out "   q($lc) => [ q($code), q($name) ],\n";
      }
      print $out "};\n\n";
   }

   print $out "
1;
";
   $out->close();
}

1;

# Local Variables:
# mode: cperl
# indent-tabs-mode: nil
# cperl-indent-level: 3
# cperl-continued-statement-offset: 2
# cperl-continued-brace-offset: 0
# cperl-brace-offset: 0
# cperl-brace-imaginary-offset: 0
# cperl-label-offset: 0
# End: