summaryrefslogtreecommitdiff
path: root/javainstaller2/src/Helpfiles/create_helpfiles.pl
diff options
context:
space:
mode:
Diffstat (limited to 'javainstaller2/src/Helpfiles/create_helpfiles.pl')
-rwxr-xr-xjavainstaller2/src/Helpfiles/create_helpfiles.pl268
1 files changed, 268 insertions, 0 deletions
diff --git a/javainstaller2/src/Helpfiles/create_helpfiles.pl b/javainstaller2/src/Helpfiles/create_helpfiles.pl
new file mode 100755
index 000000000000..7fb1ac836faf
--- /dev/null
+++ b/javainstaller2/src/Helpfiles/create_helpfiles.pl
@@ -0,0 +1,268 @@
+: # -*- perl -*-
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+# create java installer help files in html format for all languages defined in ulf file
+
+use Cwd;
+use File::Copy;
+
+if( $#ARGV < 2 )
+ {
+ print <<ENDHELP;
+USAGE: $0 <separator> <ulf_file_path> <outputpath>
+ <separator>: separator, used on the platform (slash or backslash)
+ <ulf_file_path>: path, in which the ulf file(s) can be found
+ <outputpath>: path, in which the help files will be created
+ENDHELP
+ exit;
+ }
+
+$separator = $ARGV[0];
+$inputpath = $ARGV[1];
+$outputpath = $ARGV[2];
+
+$inputpath =~ s/\Q$separator\E\s*$//;
+$outputpath =~ s/\Q$separator\E\s*$//;
+
+if ( ! -d $outputpath ) { mkdir $outputpath; }
+
+print "Separator: $separator \n";
+print "Input path: $inputpath \n";
+print "Output path: $outputpath \n";
+
+my $localdir = cwd();
+
+my $ulffilename = "setupstrings.ulf";
+my $helpfilename = "helpfilenames.txt";
+my $defaultlanguage = "en-US";
+
+$ulffilename = $inputpath . $separator . $ulffilename;
+my $ulffile = read_file($ulffilename);
+
+my $helpfilenames = read_file($helpfilename);
+my $allhelpfilenames = collect_helpfile_names($helpfilenames);
+
+my $alllanguages = get_all_languages($ulffile);
+my @allnewpropertyfiles = ();
+
+for ( my $i = 0; $i <= $#{$allhelpfilenames}; $i++ )
+{
+ my $helpfilename = ${$allhelpfilenames}[$i];
+
+ for ( my $j = 0; $j <= $#{$alllanguages}; $j++ )
+ {
+ my $language = ${$alllanguages}[$j];
+
+ # Creating content of help file
+ my $helpfilecontent = collect_helpfile_content($helpfilename, $ulffile, $language);
+
+ # Saving helpfile
+ my $savefilename = $helpfilename . "_" . $language . ".html";
+ $savefilename = $outputpath . $separator . $savefilename;
+ save_file($savefilename, $helpfilecontent);
+
+ if ( $language eq $defaultlanguage )
+ {
+ $savefilename = $helpfilename . ".html";
+ $savefilename = $outputpath . $separator . $savefilename;
+ save_file($savefilename, $helpfilecontent);
+ }
+ }
+}
+
+exit;
+
+sub main::read_directory
+{
+ my ($dir, $ext) = @_;
+
+ my @content = ();
+ my $direntry;
+ opendir(DIR, $dir);
+
+ foreach $direntry (readdir (DIR))
+ {
+ next if $direntry eq ".";
+ next if $direntry eq "..";
+ next if ( ! ( $direntry =~ /\.\Q$ext\E\s*$/ ));
+
+ # my $completeentry = $dir . $separator . $direntry;
+ # push(@content, $completeentry);
+ push(@content, $direntry);
+ }
+
+ closedir(DIR);
+ return \@content;
+}
+
+sub main::read_file
+{
+ my ($filename) = @_;
+
+ open( IN, "<$filename" ) || die "cannot open $filename";
+ my @content = <IN>;
+ close( IN );
+
+ return \@content;
+}
+
+sub main::collect_helpfile_content
+{
+ my ($helpfilename, $ulffile, $language) = @_;
+
+ my @helpfilecontent = ();
+ my $stringhash = create_string_hash($ulffile, $language);
+
+ # Collecting all strings for one html file.
+ # For "Prologue_de.html" all files need to begin with "STRING_PROLOGUE_X"
+ # The "X" is the ordering number.
+
+ my $basestring = "STRING_" . uc($helpfilename) . "_";
+
+ for ( my $i = 0; $i <= 10; $i++ ) # 10 strings possible for each html file
+ {
+ my $key = $basestring . $i;
+ if ( exists $stringhash->{$key} )
+ {
+ my $content = $stringhash->{$key} . "\n<p>\n";
+ push(@helpfilecontent, $content);
+ }
+ }
+
+ return \@helpfilecontent;
+}
+
+sub main::collect_helpfile_names
+{
+ my ($helpfilecontent) = @_;
+
+ my @allhelpfiles = ();
+
+ for ( my $i = 0; $i <= $#{$helpfilecontent}; $i++ )
+ {
+ if ( ${$helpfilecontent}[$i] =~ /^\s*#/ ) { next; } # comment line
+ if ( ${$helpfilecontent}[$i] =~ /^\s*$/ ) { next; } # empty line
+ my $filename = ${$helpfilecontent}[$i];
+ $filename =~ s/\s//g;
+ push(@allhelpfiles, $filename);
+ }
+
+ return \@allhelpfiles;
+}
+
+sub main::get_all_languages
+{
+ my ($ulffile) = @_;
+
+ my @languages = ();
+ my $record = 0;
+
+ for ( my $i = 0; $i <= $#{$ulffile}; $i++ )
+ {
+ if (( ${$ulffile}[$i] =~ /^\s*\[.*]\s*$/ ) && ( $record )) { last; }
+ if (( ${$ulffile}[$i] =~ /^\s*\[.*]\s*$/ ) && ( $record == 0 )) { $record = 1; }
+
+ if (( $record ) && ( ${$ulffile}[$i] =~ /^\s*(.+?)\s*\=/ ))
+ {
+ $language = $1;
+ push(@languages, $language);
+ }
+ }
+
+ my $languagestring = "";
+ for ( my $i = 0; $i <= $#languages; $i++ ) { $languagestring = $languagestring . $languages[$i] . ","; }
+ $languagestring =~ s/,\s*$//;
+ print "Languages: $languagestring\n";
+
+ return \@languages;
+}
+
+sub main::create_string_hash
+{
+ my ($ulffile, $language) = @_;
+
+ my %stringhash = ();
+ my $key = "";
+ my $value_defined = 0;
+
+ for ( my $i = 0; $i <= $#{$ulffile}; $i++ )
+ {
+ if ( ${$ulffile}[$i] =~ /^\s*\[(.*)\]\s*$/ )
+ {
+ $key = $1;
+ $value_defined = 0;
+ }
+
+ if (( ${$ulffile}[$i] =~ /^\s*\Q$defaultlanguage\E\s*=\s*\"(.*)\"\s*$/ ) && ( ! $value_defined ))
+ {
+ $value = $1; # defaulting to english
+ $stringhash{$key} = $value;
+ }
+
+ if (( ${$ulffile}[$i] =~ /^\s*\Q$language\E\s*=\s*\"(.*)\"\s*$/ ) && ( ! $value_defined ))
+ {
+ $value = $1;
+ $stringhash{$key} = $value;
+ $value_defined = 1;
+ }
+ }
+
+ # additional replacement for ${LANGUAGE}, not defined in ulf file
+ my $languagekey = "LANGUAGE";
+ $stringhash{$languagekey} = $language;
+
+ # print_hash(\%stringhash);
+
+ return \%stringhash;
+}
+
+sub main::print_hash
+{
+ my ( $hashref ) = @_;
+
+ print "Hash contains:\n";
+
+ my $key;
+ foreach $key (keys %{$hashref} ) { print "Key: $key, Value: $hashref->{$key}\n"; }
+}
+
+sub main::save_file
+{
+ my ($filename, $filecontent) = @_;
+
+ if ( open( OUT, ">$filename" ) )
+ {
+ print OUT @{$filecontent};
+ close( OUT);
+ }
+
+ push(@allnewpropertyfiles, $filename);
+ print "Created file: $filename\n";
+}