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