summaryrefslogtreecommitdiff
path: root/macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl
Initial commit
Diffstat (limited to 'macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl')
-rw-r--r--macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl78
1 files changed, 78 insertions, 0 deletions
diff --git a/macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl b/macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl
new file mode 100644
index 0000000000..5f66d7963a
--- /dev/null
+++ b/macros/texinfo/texinfo/tp/maintain/regenerate_documentlanguages.pl
@@ -0,0 +1,78 @@
+#! /usr/bin/env perl
+
+# regenerate_documentlanguages.pl: download the iana files language
+# and regenerate Texinfo/Documentlanguages.pm list of languages and regions
+#
+# Copyright 2010, 2011, 2012 Free Software Foundation, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved. This file is offered as-is,
+# without any warranty.
+#
+# Original author: Patrice Dumas <pertusus@free.fr>
+#
+# Calling that script for each release could be a good idea.
+
+use strict;
+
+# emulates -w
+BEGIN
+{
+ $^W = 1;
+}
+
+my $dir = 'maintain';
+system ("cd $dir && wget -N http://www.iana.org/assignments/language-subtag-registry");
+
+open (TXT,"$dir/language-subtag-registry") or die "Open $dir/language-subtag-registry: $!\n";
+
+my $entry;
+my @entries;
+while (<TXT>) {
+ if (/^%%/) {
+ push @entries, $entry if (defined($entry));
+ $entry = undef;
+ } else {
+ if (/^(\w+): (.*)/) {
+ $entry->{$1} = $2;
+ }
+ }
+}
+push @entries, $entry if (defined($entry));
+if (!defined($entry->{'Type'})) {
+ die "Type not defined for $entry ".join('|', keys(%$entry))."\n";
+}
+
+open (OUT, ">Texinfo/Documentlanguages.pm") or die "Open Texinfo/Documentlanguages.pm: $!\n";
+
+print OUT "# This file was automatically generated from $0\n\n";
+
+print OUT "package Texinfo::Documentlanguages;\n\n";
+
+print OUT 'our %language_codes = ('."\n";
+foreach my $entry (@entries)
+{
+ # Scope collection macrolanguage are used
+ if ($entry->{'Type'} eq 'language' and !defined($entry->{'Preferred-Value'})
+ and !defined($entry->{'Macrolanguage'})
+ and (!defined($entry->{'Scope'})
+ or ($entry->{'Scope'} ne 'special'
+ and $entry->{'Scope'} ne 'private-use'))) {
+ print OUT "'$entry->{'Subtag'}' => 1,\n";
+ print STDERR "$entry->{'Subtag'} Scope $entry->{'Scope'}\n"
+ if defined($entry->{'Scope'});
+ }
+}
+print OUT ");\n\n";
+
+print OUT 'our %region_codes = ('."\n";
+foreach my $entry (@entries)
+{
+ if ($entry->{'Type'} eq 'region' and !defined($entry->{'Preferred-Value'})
+ and $entry->{'Description'} ne 'Private use'
+ and $entry->{'Subtag'} !~ /^\d{3}$/) {
+ print OUT "'$entry->{'Subtag'}' => 1,\n";
+ }
+}
+print OUT ");\n\n1;\n";