The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use lib "./lib";
use YAML::Syck qw(DumpFile);
use Locale::Codes::Constants;
use Locale::Codes;
use Locale::Codes::Country;
use Locale::Codes::Language;
use Locale::Codes::Currency;
use Locale::Codes::Script;
use Locale::Codes::LangExt;
use Locale::Codes::LangVar;

my @type = qw(country
              currency
              langext
              langvar
              language
              script
            );

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

if (-f $yaml) {
   rename $yaml,$prev;
}

my %hash;

foreach my $type (@type) {
   my $obj = new Locale::Codes $type;
   foreach my $codeset (keys %{ $Locale::Codes::Constants::ALL_CODESETS{$type}{'codesets'} }) {
      my @codes = $obj->all_codes($codeset);
      foreach my $code (@codes) {
         my $name = $obj->code2name($code,$codeset);
         $hash{$type}{$codeset}{'code'}{$code} = $name;
      }

      my @names = $obj->all_names($codeset);
      foreach my $name (@names) {
         my $code = $obj->name2code($name,$codeset);
         $hash{$type}{$codeset}{'name'}{lc($name)} = [$code,$name];
      }
   }
}

DumpFile($yaml,\%hash);

# 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: