xref: /aosp_15_r20/external/cldr/tools/c/genldml/genindex.pl (revision 912701f9769bb47905792267661f0baf2b85bed5)
1*912701f9SAndroid Build Coastguard Worker#!/usr/bin/perl
2*912701f9SAndroid Build Coastguard Worker
3*912701f9SAndroid Build Coastguard Worker####################################################################################
4*912701f9SAndroid Build Coastguard Worker# genindex.pl:
5*912701f9SAndroid Build Coastguard Worker# Reads the source directory and creates an index.html with the link
6*912701f9SAndroid Build Coastguard Worker# Author: Ram Viswanadha
7*912701f9SAndroid Build Coastguard Worker#
8*912701f9SAndroid Build Coastguard Worker####################################################################################
9*912701f9SAndroid Build Coastguard Workeruse File::Find;
10*912701f9SAndroid Build Coastguard Workeruse File::Basename;
11*912701f9SAndroid Build Coastguard Workeruse IO::File;
12*912701f9SAndroid Build Coastguard Workeruse Cwd;
13*912701f9SAndroid Build Coastguard Workeruse File::Copy;
14*912701f9SAndroid Build Coastguard Workeruse Getopt::Long;
15*912701f9SAndroid Build Coastguard Workeruse File::Path;
16*912701f9SAndroid Build Coastguard Workeruse File::Copy;
17*912701f9SAndroid Build Coastguard Worker
18*912701f9SAndroid Build Coastguard WorkerGetOptions(
19*912701f9SAndroid Build Coastguard Worker           "--sourcedir=s" => \$sourceDir,
20*912701f9SAndroid Build Coastguard Worker           "--destdir=s" => \$destDir,
21*912701f9SAndroid Build Coastguard Worker           "--href=s" => \$href
22*912701f9SAndroid Build Coastguard Worker          );
23*912701f9SAndroid Build Coastguard Worker
24*912701f9SAndroid Build Coastguard Worker
25*912701f9SAndroid Build Coastguard Workerusage() unless defined $sourceDir;
26*912701f9SAndroid Build Coastguard Workerusage() unless defined $destDir;
27*912701f9SAndroid Build Coastguard Workerusage() unless defined $href;
28*912701f9SAndroid Build Coastguard Worker
29*912701f9SAndroid Build Coastguard Worker
30*912701f9SAndroid Build Coastguard Worker# create list of html files
31*912701f9SAndroid Build Coastguard Workermy @list;
32*912701f9SAndroid Build Coastguard Workerif (@ARGV) {
33*912701f9SAndroid Build Coastguard Worker    @list = @ARGV;
34*912701f9SAndroid Build Coastguard Worker    foreach (@list) { $_ .= ".html" unless (/\.html$/i); }
35*912701f9SAndroid Build Coastguard Worker} else {
36*912701f9SAndroid Build Coastguard Worker    opendir(DIR,$sourceDir);
37*912701f9SAndroid Build Coastguard Worker    @list = grep{/\.html$/} readdir(DIR);
38*912701f9SAndroid Build Coastguard Worker    closedir(DIR);
39*912701f9SAndroid Build Coastguard Worker}
40*912701f9SAndroid Build Coastguard Worker$outfile = $destDir."/index.html";
41*912701f9SAndroid Build Coastguard Worker$outFH = IO::File->new($outfile,"w")
42*912701f9SAndroid Build Coastguard Worker            or die  "could not open the file $outfile for writing: $! \n";
43*912701f9SAndroid Build Coastguard Workerprint $outFH "<html>\n";
44*912701f9SAndroid Build Coastguard Workerprint $outFH "\t<head>Index of all comparison charts</head>\n";
45*912701f9SAndroid Build Coastguard Workerprint $outFH "\t<body bgcolor=\"#FFFFFF\">\n";
46*912701f9SAndroid Build Coastguard Workerprint $outFH "\t\t<ul>\n";
47*912701f9SAndroid Build Coastguard Worker# now convert
48*912701f9SAndroid Build Coastguard Workerforeach $item (@list){
49*912701f9SAndroid Build Coastguard Worker    next if($item eq "." || $item eq ".." || $item eq "index.html");
50*912701f9SAndroid Build Coastguard Worker    ($s1, $s2) = split(/\./,$item);
51*912701f9SAndroid Build Coastguard Worker    #grab the english translation
52*912701f9SAndroid Build Coastguard Worker    $inFH = IO::File->new($item,"r")
53*912701f9SAndroid Build Coastguard Worker            or die  "could not open the file $outfile for reading: $! \n";
54*912701f9SAndroid Build Coastguard Worker    $fullName="";
55*912701f9SAndroid Build Coastguard Worker    while(defined ($line=<$inFH>)){
56*912701f9SAndroid Build Coastguard Worker          if($line =~ /.*?(\(.*\).*Cover Page.*)/){
57*912701f9SAndroid Build Coastguard Worker            $line =~ /.*?(\(.*\))/;
58*912701f9SAndroid Build Coastguard Worker            $fullName =  $1;
59*912701f9SAndroid Build Coastguard Worker            if($fullName eq ""){
60*912701f9SAndroid Build Coastguard Worker                print $line."\n";
61*912701f9SAndroid Build Coastguard Worker            }
62*912701f9SAndroid Build Coastguard Worker            break;
63*912701f9SAndroid Build Coastguard Worker          }
64*912701f9SAndroid Build Coastguard Worker    }
65*912701f9SAndroid Build Coastguard Worker
66*912701f9SAndroid Build Coastguard Worker    print $outFH "\t\t\t<li><a href=\"$href/$item\">$s1</a> $fullName</li>\n";
67*912701f9SAndroid Build Coastguard Worker    close($inFH);
68*912701f9SAndroid Build Coastguard Worker}
69*912701f9SAndroid Build Coastguard Worker
70*912701f9SAndroid Build Coastguard Workerprint $outFH "\t\t</ul>\n";
71*912701f9SAndroid Build Coastguard Workerprint $outFH "\t</body>\n";
72*912701f9SAndroid Build Coastguard Workerprint $outFH "</html>\n";
73*912701f9SAndroid Build Coastguard Workerclose($outFH);
74*912701f9SAndroid Build Coastguard Worker
75*912701f9SAndroid Build Coastguard Worker#-----------------------------------------------------------------------
76*912701f9SAndroid Build Coastguard Workersub usage {
77*912701f9SAndroid Build Coastguard Worker    print << "END";
78*912701f9SAndroid Build Coastguard WorkerUsage:
79*912701f9SAndroid Build Coastguard Workertxt2ldml.pl
80*912701f9SAndroid Build Coastguard WorkerOptions:
81*912701f9SAndroid Build Coastguard Worker        --sourcedir=<directory>
82*912701f9SAndroid Build Coastguard Worker        --destdir=<directory>
83*912701f9SAndroid Build Coastguard Worker        --href=<The URL to be prepended>
84*912701f9SAndroid Build Coastguard Worker
85*912701f9SAndroid Build Coastguard WorkerEND
86*912701f9SAndroid Build Coastguard Worker  exit(0);
87*912701f9SAndroid Build Coastguard Worker}
88