Blame internal/gen_mods

Packit f3e6b9
#!/usr/bin/perl -w
Packit f3e6b9
Packit f3e6b9
use strict;
Packit f3e6b9
use warnings;
Packit f3e6b9
Packit f3e6b9
use Cwd;
Packit f3e6b9
use IO::File;
Packit f3e6b9
Packit f3e6b9
################################################################################
Packit f3e6b9
Packit f3e6b9
our($YEAR,$VERSION);
Packit f3e6b9
get_vars();
Packit f3e6b9
Packit f3e6b9
# $type{TYPE} => TYPE_DESC
Packit f3e6b9
#
Packit f3e6b9
# TYPE_DESC = { label    => [TYPE_LABEL, ...]
Packit f3e6b9
#               modlabel => MOD_LABEL
Packit f3e6b9
#               default  => CODESET
Packit f3e6b9
#               codesets => { CODESET => CODESET_DESC }
Packit f3e6b9
#             }
Packit f3e6b9
#
Packit f3e6b9
# CODESET_DESC = { label => [CODESET_LABEL, ...]
Packit f3e6b9
#                  const => [CONST, ...]
Packit f3e6b9
#                  desc  => CODE_DESC
Packit f3e6b9
#                }
Packit f3e6b9
#
Packit f3e6b9
# TYPE          : the type of codes                      country
Packit f3e6b9
# TYPE_LABEL    : the label(s) for this type of          COUNTRY
Packit f3e6b9
#                 code (defaults to TYPE in all
Packit f3e6b9
#                 uppercase and with '-' replaced
Packit f3e6b9
#                 with '_')
Packit f3e6b9
# MOD_LABEL     : the label for the module name          Country
Packit f3e6b9
#                 (defaults to ucfirst(TYPE))
Packit f3e6b9
# CODESET       : the name of each codeset               alpha-2
Packit f3e6b9
# CODESET_LABEL : the label for this codeset             ALPHA_2
Packit f3e6b9
#                 (defaults to CODESET in all
Packit f3e6b9
#                 uppercase and with '-' replaced
Packit f3e6b9
#                 with '_')
Packit f3e6b9
# CONST         : the name of 1 or more constants        LOCALE_CODE_ALPHA_2
Packit f3e6b9
#                 that will be associated with this
Packit f3e6b9
#                 codeset (defaults to a single
Packit f3e6b9
#                 constant for each TYPE_LABEL and
Packit f3e6b9
#                 CODESET_LABEL combination of the
Packit f3e6b9
#                 form:
Packit f3e6b9
#                 LOCALE_<TYPE_LABEL>_<CODESET_LABEL>)
Packit f3e6b9
# CODE_DESC     : a listref describing the format        ['numeric',3]
Packit f3e6b9
#                 of the codes in this codeset;
Packit f3e6b9
#                 possible values are:
Packit f3e6b9
#                   uc        : uppercase code
Packit f3e6b9
#                   lc        : lowercase code
Packit f3e6b9
#                   ucfirst   : code with 1st character
Packit f3e6b9
#                               uppercase
Packit f3e6b9
#                   numeric,N : an N-digit numeric
Packit f3e6b9
#                               code
Packit f3e6b9
Packit f3e6b9
our %type =
Packit f3e6b9
  ('country' => {
Packit f3e6b9
                 'label'    => ['CODE','COUNTRY'],
Packit f3e6b9
                 'default'  => 'alpha-2',
Packit f3e6b9
                 'codesets' => { 'alpha-2'      => { 'desc'  => ['lc'], },
Packit f3e6b9
                                 'alpha-3'      => { 'desc'  => ['lc'], },
Packit f3e6b9
                                 'numeric'      => { 'desc'  => ['numeric',3], },
Packit f3e6b9
                                 'dom'          => { 'desc'  => ['lc'], },
Packit f3e6b9
                                 'un-alpha-3'   => { 'desc'  => ['uc'], },
Packit f3e6b9
                                 'un-numeric'   => { 'desc'  => ['numeric',3], },
Packit f3e6b9
                                 'genc-alpha-2' => { 'desc'  => ['uc'], },
Packit f3e6b9
                                 'genc-alpha-3' => { 'desc'  => ['uc'], },
Packit f3e6b9
                                 'genc-numeric' => { 'desc'  => ['numeric',3], },
Packit f3e6b9
                               },
Packit f3e6b9
                },
Packit f3e6b9
   'language' => {
Packit f3e6b9
                  'label'    => ['LANG','LANGUAGE'],
Packit f3e6b9
                  'default'  => 'alpha-2',
Packit f3e6b9
                  'codesets' => { 'alpha-2'  => { 'desc'   => ['lc'], },
Packit f3e6b9
                                  'alpha-3'  => { 'desc'   => ['lc'], },
Packit f3e6b9
                                  'term'     => { 'desc'   => ['lc'], },
Packit f3e6b9
                                },
Packit f3e6b9
                 },
Packit f3e6b9
   'currency' => {
Packit f3e6b9
                  'label'    => ['CURR','CURRENCY'],
Packit f3e6b9
                  'default'  => 'alpha',
Packit f3e6b9
                  'codesets' => { 'alpha'   => { 'desc'   => ['uc'], },
Packit f3e6b9
                                  'num'     => { 'label'  => ['NUMERIC'],
Packit f3e6b9
                                                 'desc'   => ['numeric',3], },
Packit f3e6b9
                                },
Packit f3e6b9
                 },
Packit f3e6b9
   'script' => {
Packit f3e6b9
                'default'  => 'alpha',
Packit f3e6b9
                'codesets' => { 'alpha'    => { 'desc'   => ['ucfirst'], },
Packit f3e6b9
                                'num'      => { 'label'  => ['NUMERIC'],
Packit f3e6b9
                                                'desc'   => ['numeric',3], },
Packit f3e6b9
                              },
Packit f3e6b9
               },
Packit f3e6b9
   'langext' => {
Packit f3e6b9
                 'default'  => 'alpha',
Packit f3e6b9
                 'modlabel' => 'LangExt',
Packit f3e6b9
                 'codesets' => { 'alpha'  => { 'desc'   => ['lc'], },
Packit f3e6b9
                               },
Packit f3e6b9
                },
Packit f3e6b9
   'langvar' => {
Packit f3e6b9
                 'default'  => 'alpha',
Packit f3e6b9
                 'modlabel' => 'LangVar',
Packit f3e6b9
                 'codesets' => { 'alpha'  => { 'desc'   => ['lc'], },
Packit f3e6b9
                               },
Packit f3e6b9
                },
Packit f3e6b9
   'langfam' => {
Packit f3e6b9
                 'default'  => 'alpha',
Packit f3e6b9
                 'modlabel' => 'LangFam',
Packit f3e6b9
                 'codesets' => { 'alpha'  => { 'desc'   => ['lc'], },
Packit f3e6b9
                               },
Packit f3e6b9
                },
Packit f3e6b9
  );
Packit f3e6b9
Packit f3e6b9
################################################################################
Packit f3e6b9
Packit f3e6b9
our ($max,$maxc);
Packit f3e6b9
gen_constants();
Packit f3e6b9
gen_mods();
Packit f3e6b9
Packit f3e6b9
################################################################################
Packit f3e6b9
Packit f3e6b9
sub gen_mods {
Packit f3e6b9
   foreach my $type (sort keys %type) {
Packit f3e6b9
      _gen_mod($type,'');
Packit f3e6b9
      _gen_mod($type,'pod');
Packit f3e6b9
   }
Packit f3e6b9
   foreach my $type (qw(country language currency script)) {
Packit f3e6b9
      _gen_mod($type,'',   'old');
Packit f3e6b9
      _gen_mod($type,'pod','old');
Packit f3e6b9
   }
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub _gen_mod {
Packit f3e6b9
   my($type,$pod,$old) = @_;
Packit f3e6b9
   my $mod   = (exists $type{$type}{'modlabel'}
Packit f3e6b9
                ? $type{$type}{'modlabel'}
Packit f3e6b9
                : _upcase_first($type) );
Packit f3e6b9
   my $dire  = ($old ? "lib/Locale" : "lib/Locale/Codes");
Packit f3e6b9
   my $f     = "$dire/$mod." . ($pod ? 'pod' : 'pm');
Packit f3e6b9
   my $o     = new IO::File;
Packit f3e6b9
   $o->open("> $f");
Packit f3e6b9
   if ($pod) {
Packit f3e6b9
      __gen_pod($o,$type,$mod,$old);
Packit f3e6b9
   } else {
Packit f3e6b9
      _header($o,$mod,$old);
Packit f3e6b9
      __gen_mod($o,$type,$mod);
Packit f3e6b9
   }
Packit f3e6b9
   $o->close();
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub __gen_pod {
Packit f3e6b9
   my($o,$type,$mod,$old) = @_;
Packit f3e6b9
Packit f3e6b9
   my $parent             = ($old ? "Locale" : "Locale::Codes");
Packit f3e6b9
Packit f3e6b9
   my $typelab            = ($type{$type}{'modlable'}
Packit f3e6b9
                             ? $type{$type}{'modlable'}
Packit f3e6b9
                             : ucfirst($type));
Packit f3e6b9
Packit f3e6b9
   print $o <<"EOS";
Packit f3e6b9
=pod
Packit f3e6b9
Packit f3e6b9
=head1 NAME
Packit f3e6b9
Packit f3e6b9
${parent}::${mod} - module for dealing with ${type} code sets
Packit f3e6b9
Packit f3e6b9
=head1 SYNOPSIS
Packit f3e6b9
Packit f3e6b9
   use ${parent}::${mod};
Packit f3e6b9
Packit f3e6b9
   \$name = code2${type}(CODE);
Packit f3e6b9
   \$code = ${type}2code(NAME);
Packit f3e6b9
Packit f3e6b9
   \@codes   = all_${type}_codes();
Packit f3e6b9
   \@names   = all_${type}_names();
Packit f3e6b9
Packit f3e6b9
=head1 DESCRIPTION
Packit f3e6b9
Packit f3e6b9
This module provides access to ${type} code sets.
Packit f3e6b9
Packit f3e6b9
Please refer to the L<Locale::Codes::Types> document for a description
Packit f3e6b9
of the code sets available.
Packit f3e6b9
Packit f3e6b9
Most of the routines take an optional additional argument which
Packit f3e6b9
specifies the code set to use. The code set can be specified using the
Packit f3e6b9
name of a code set, or the perl constant specified in the above
Packit f3e6b9
document.  If not specified, the default code set will be used.
Packit f3e6b9
Packit f3e6b9
=head1 ROUTINES
Packit f3e6b9
Packit f3e6b9
All routines in this module call the appropriate method in the
Packit f3e6b9
L<Locale::Codes> module, using an object of type: $type
Packit f3e6b9
Please refer to the documentation of the L<Locale::Codes> module
Packit f3e6b9
for details about each function.
Packit f3e6b9
Packit f3e6b9
The following functions are exported automatically:
Packit f3e6b9
Packit f3e6b9
=over 4
Packit f3e6b9
Packit f3e6b9
=item B<code2${type}(CODE [,CODESET] [,'retired'])>
Packit f3e6b9
Packit f3e6b9
See B<code2name> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${type}2code(NAME [,CODESET] [,'retired'])>
Packit f3e6b9
Packit f3e6b9
See B<name2code> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${type}_code2code(CODE ,CODESET ,CODESET2)>
Packit f3e6b9
Packit f3e6b9
See B<code2code> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<all_${type}_codes([CODESET] [,'retired'])>
Packit f3e6b9
Packit f3e6b9
See B<all_codes> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<all_${type}_names([CODESET] [,'retired'])>
Packit f3e6b9
Packit f3e6b9
See B<all_names> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=back
Packit f3e6b9
Packit f3e6b9
The following functions are not exported and must be called fully
Packit f3e6b9
qualified with the package name:
Packit f3e6b9
Packit f3e6b9
=over 4
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::show_errors(FLAG)>
Packit f3e6b9
Packit f3e6b9
By default, invalid input will produce empty results, but no errors.  By
Packit f3e6b9
passing in a non-zero value of FLAG, errors will be produced.
Packit f3e6b9
Packit f3e6b9
See B<show_errors> in L<Locale::Codes> but note that the default for
Packit f3e6b9
the non-OO modules are to NOT produce errors.
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::rename_${type}(CODE ,NEW_NAME [,CODESET])>
Packit f3e6b9
Packit f3e6b9
See B<rename_code> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::add_${type}(CODE ,NAME [,CODESET])>
Packit f3e6b9
Packit f3e6b9
See B<add_code> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::delete_${type}(CODE [,CODESET])>
Packit f3e6b9
Packit f3e6b9
See B<delete_code> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::add_${type}_alias(NAME ,NEW_NAME)>
Packit f3e6b9
Packit f3e6b9
See B<add_alias> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::delete_${type}_alias(NAME)>
Packit f3e6b9
Packit f3e6b9
See B<delete_alias> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::rename_${type}_code(CODE ,NEW_CODE [,CODESET])>
Packit f3e6b9
Packit f3e6b9
See B<replace_code> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::add_${type}_code_alias(CODE ,NEW_CODE [,CODESET])>
Packit f3e6b9
Packit f3e6b9
See B<add_code_alias> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=item B<${parent}::${typelab}::delete_${type}_code_alias(CODE [,CODESET])>
Packit f3e6b9
Packit f3e6b9
See B<delete_code_alias> in L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
=back
Packit f3e6b9
Packit f3e6b9
=head1 SEE ALSO
Packit f3e6b9
Packit f3e6b9
=over 4
Packit f3e6b9
Packit f3e6b9
=item L<Locale::Codes>
Packit f3e6b9
Packit f3e6b9
The Locale-Codes distribution.
Packit f3e6b9
Packit f3e6b9
=back
Packit f3e6b9
Packit f3e6b9
=head1 AUTHOR
Packit f3e6b9
Packit f3e6b9
See Locale::Codes for full author history.
Packit f3e6b9
Packit f3e6b9
Currently maintained by Sullivan Beck (sbeck\@cpan.org).
Packit f3e6b9
Packit f3e6b9
=head1 COPYRIGHT
Packit f3e6b9
Packit f3e6b9
   Copyright (c) 2011-2018 Sullivan Beck
Packit f3e6b9
Packit f3e6b9
This module is free software; you can redistribute it and/or
Packit f3e6b9
modify it under the same terms as Perl itself.
Packit f3e6b9
Packit f3e6b9
=cut
Packit f3e6b9
EOS
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub __gen_mod {
Packit f3e6b9
   my($o,$type,$mod) = @_;
Packit f3e6b9
   my($TYPE)         = uc($type);
Packit f3e6b9
Packit f3e6b9
   print $o <<"EOS";
Packit f3e6b9
use if \$] >= 5.027007, 'deprecate';
Packit f3e6b9
use Locale::Codes;
Packit f3e6b9
use Locale::Codes::Constants;
Packit f3e6b9
Packit f3e6b9
\@EXPORT    = qw(
Packit f3e6b9
                code2${type}
Packit f3e6b9
                ${type}2code
Packit f3e6b9
                all_${type}_codes
Packit f3e6b9
                all_${type}_names
Packit f3e6b9
                ${type}_code2code
Packit f3e6b9
               );
Packit f3e6b9
push(\@EXPORT,\@Locale::Codes::Constants::CONSTANTS_${TYPE});
Packit f3e6b9
Packit f3e6b9
our \$obj = new Locale::Codes('$type');
Packit f3e6b9
\$obj->show_errors(0);
Packit f3e6b9
Packit f3e6b9
sub show_errors {
Packit f3e6b9
   my(\$val) = \@_;
Packit f3e6b9
   \$obj->show_errors(\$val);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub code2${type} {
Packit f3e6b9
   return \$obj->code2name(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub ${type}2code {
Packit f3e6b9
   return \$obj->name2code(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub ${type}_code2code {
Packit f3e6b9
   return \$obj->code2code(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub all_${type}_codes {
Packit f3e6b9
   return \$obj->all_codes(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub all_${type}_names {
Packit f3e6b9
   return \$obj->all_names(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub rename_${type} {
Packit f3e6b9
   return \$obj->rename_code(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub add_${type} {
Packit f3e6b9
   return \$obj->add_code(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub delete_${type} {
Packit f3e6b9
   return \$obj->delete_code(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub add_${type}_alias {
Packit f3e6b9
   return \$obj->add_alias(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub delete_${type}_alias {
Packit f3e6b9
   return \$obj->delete_alias(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub rename_${type}_code {
Packit f3e6b9
   return \$obj->replace_code(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub add_${type}_code_alias {
Packit f3e6b9
   return \$obj->add_code_alias(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub delete_${type}_code_alias {
Packit f3e6b9
   return \$obj->delete_code_alias(\@_);
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
1;
Packit f3e6b9
EOS
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub get_vars {
Packit f3e6b9
   my $dir  = getcwd;
Packit f3e6b9
   $dir     =~ /Locale\-Codes\-(\d+\.\d+)/;
Packit f3e6b9
   $VERSION = $1;
Packit f3e6b9
Packit f3e6b9
   $YEAR    = (localtime(time))[5] + 1900;
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub gen_constants {
Packit f3e6b9
   my $f    = "lib/Locale/Codes/Constants.pm";
Packit f3e6b9
   my $o    = new IO::File;
Packit f3e6b9
   $o->open("> $f");
Packit f3e6b9
   _header($o,"Constants");
Packit f3e6b9
   _constants_defs($o);
Packit f3e6b9
   $o->close();
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub _constants_defs {
Packit f3e6b9
   my($o) = @_;
Packit f3e6b9
Packit f3e6b9
   $max   = 0;
Packit f3e6b9
   $maxc  = 0;
Packit f3e6b9
   foreach my $type (sort keys %type) {
Packit f3e6b9
      my @lab = (exists $type{$type}{'label'}
Packit f3e6b9
                 ? @{ $type{$type}{'label'} }
Packit f3e6b9
                 : _upcase($type) );
Packit f3e6b9
      foreach my $codeset (sort keys %{ $type{$type}{'codesets'} }) {
Packit f3e6b9
         my @const;
Packit f3e6b9
         if (exists $type{$type}{'codesets'}{$codeset}{'const'} ) {
Packit f3e6b9
            @const = @{ $type{$type}{'codesets'}{$codeset}{'const'} };
Packit f3e6b9
         } else {
Packit f3e6b9
            my @clab = (exists $type{$type}{'codesets'}{$codeset}{'label'}
Packit f3e6b9
                        ? @{ $type{$type}{'codesets'}{$codeset}{'label'} }
Packit f3e6b9
                        : _upcase($codeset) );
Packit f3e6b9
            foreach my $lab (@lab) {
Packit f3e6b9
               foreach my $clab (@clab) {
Packit f3e6b9
                  push(@const,"LOCALE_${lab}_${clab}");
Packit f3e6b9
               }
Packit f3e6b9
            }
Packit f3e6b9
         }
Packit f3e6b9
         foreach my $const (@const) {
Packit f3e6b9
            $type{$type}{'const'}{$const} = $codeset;
Packit f3e6b9
            if (length($const) > $max) {
Packit f3e6b9
               $max = length($const);
Packit f3e6b9
            }
Packit f3e6b9
         }
Packit f3e6b9
         if (length($codeset) > $maxc) {
Packit f3e6b9
            $maxc = length($codeset);
Packit f3e6b9
         }
Packit f3e6b9
      }
Packit f3e6b9
   }
Packit f3e6b9
Packit f3e6b9
   print $o <<"EOS";
Packit f3e6b9
our(\@CONSTANTS,\%ALL_CODESETS);
Packit f3e6b9
Packit f3e6b9
EOS
Packit f3e6b9
Packit f3e6b9
   foreach my $type (sort keys %type) {
Packit f3e6b9
      print $o "our(\@CONSTANTS_" . uc($type) . ") = qw(\n";
Packit f3e6b9
      foreach my $const (sort keys %{ $type{$type}{'const'} }) {
Packit f3e6b9
         print $o "                $const\n";
Packit f3e6b9
      }
Packit f3e6b9
      print $o ");\n";
Packit f3e6b9
      print $o "push(\@CONSTANTS,\@CONSTANTS_" . uc($type) . ");\n";
Packit f3e6b9
      print $o "\n";
Packit f3e6b9
   }
Packit f3e6b9
Packit f3e6b9
   print $o <<"EOS";
Packit f3e6b9
\@EXPORT    = (\@CONSTANTS,
Packit f3e6b9
               qw(
Packit f3e6b9
                \%ALL_CODESETS
Packit f3e6b9
               ));
Packit f3e6b9
Packit f3e6b9
EOS
Packit f3e6b9
Packit f3e6b9
   foreach my $type (sort keys %type) {
Packit f3e6b9
      foreach my $const (sort keys %{ $type{$type}{'const'} }) {
Packit f3e6b9
         my $codeset = $type{$type}{'const'}{$const};
Packit f3e6b9
         my $spc     = ' 'x($max - length($const));
Packit f3e6b9
         print $o "use constant $const$spc => '$codeset';\n"
Packit f3e6b9
      }
Packit f3e6b9
      my $def = $type{$type}{'default'};
Packit f3e6b9
      my $mod = (exists $type{$type}{'modlabel'}
Packit f3e6b9
                 ? $type{$type}{'modlabel'}
Packit f3e6b9
                 : _upcase_first($type) );
Packit f3e6b9
      print $o <<"EOS";
Packit f3e6b9
Packit f3e6b9
\$ALL_CODESETS{'$type'} =
Packit f3e6b9
   {
Packit f3e6b9
      'default'  => '$def',
Packit f3e6b9
      'module'   => '$mod',
Packit f3e6b9
      'codesets' => {
Packit f3e6b9
EOS
Packit f3e6b9
      foreach my $codeset (sort keys %{ $type{$type}{'codesets'} }) {
Packit f3e6b9
         my @desc = @{ $type{$type}{'codesets'}{$codeset}{'desc'} };
Packit f3e6b9
         foreach my $d (@desc) {
Packit f3e6b9
            if ($d !~ /^\d+$/) {
Packit f3e6b9
               $d = "'$d'";
Packit f3e6b9
            }
Packit f3e6b9
         }
Packit f3e6b9
         my $desc = join(',',@desc);
Packit f3e6b9
         my $spc  = ' 'x($maxc-length($codeset));
Packit f3e6b9
         print $o <<"EOS";
Packit f3e6b9
                     '$codeset'$spc => [$desc],
Packit f3e6b9
EOS
Packit f3e6b9
      }
Packit f3e6b9
      print $o <<"EOS";
Packit f3e6b9
                    }
Packit f3e6b9
   };
Packit f3e6b9
Packit f3e6b9
EOS
Packit f3e6b9
   }
Packit f3e6b9
   print $o "\n1;\n";
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub _upcase {
Packit f3e6b9
   my($string) = @_;
Packit f3e6b9
   $string     = uc($string);
Packit f3e6b9
   $string     =~ s/\-/_/g;
Packit f3e6b9
   return $string;
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub _upcase_first {
Packit f3e6b9
   my($string) = @_;
Packit f3e6b9
   $string     = ucfirst($string);
Packit f3e6b9
   $string     =~ s/\-/_/g;
Packit f3e6b9
   return $string;
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
sub _header {
Packit f3e6b9
   my($o,$package,$old) = @_;
Packit f3e6b9
Packit f3e6b9
   my $timestamp   = `date`;
Packit f3e6b9
   chomp($timestamp);
Packit f3e6b9
Packit f3e6b9
   my $parent      = ($old ? "Locale" : "Locale::Codes");
Packit f3e6b9
Packit f3e6b9
   print $o <<"EOS";
Packit f3e6b9
package ${parent}::$package;
Packit f3e6b9
# Copyright (C) 2001      Canon Research Centre Europe (CRE).
Packit f3e6b9
# Copyright (C) 2002-2009 Neil Bowers
Packit f3e6b9
# Copyright (c) 2010-$YEAR Sullivan Beck
Packit f3e6b9
# This program is free software; you can redistribute it and/or modify it
Packit f3e6b9
# under the same terms as Perl itself.
Packit f3e6b9
Packit f3e6b9
# This file was automatically generated.  Any changes to this file will
Packit f3e6b9
# be lost the next time 'gen_mods' is run.
Packit f3e6b9
#    Generated on: $timestamp
Packit f3e6b9
Packit f3e6b9
use strict;
Packit f3e6b9
use warnings;
Packit f3e6b9
require 5.006;
Packit f3e6b9
use Exporter qw(import);
Packit f3e6b9
Packit f3e6b9
our(\$VERSION,\@EXPORT);
Packit f3e6b9
\$VERSION   = '$VERSION';
Packit f3e6b9
Packit f3e6b9
################################################################################
Packit f3e6b9
EOS
Packit f3e6b9
}
Packit f3e6b9
Packit f3e6b9
# Local Variables:
Packit f3e6b9
# mode: cperl
Packit f3e6b9
# indent-tabs-mode: nil
Packit f3e6b9
# cperl-indent-level: 3
Packit f3e6b9
# cperl-continued-statement-offset: 2
Packit f3e6b9
# cperl-continued-brace-offset: 0
Packit f3e6b9
# cperl-brace-offset: 0
Packit f3e6b9
# cperl-brace-imaginary-offset: 0
Packit f3e6b9
# cperl-label-offset: 0
Packit f3e6b9
# End: