diff options
Diffstat (limited to 'javainstaller2/src/Helpfiles/create_helpfiles.pl')
-rwxr-xr-x | javainstaller2/src/Helpfiles/create_helpfiles.pl | 268 |
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"; +} |