diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/rcsinfo/rcsinfo.perl')
-rw-r--r-- | Master/texmf-dist/doc/latex/rcsinfo/rcsinfo.perl | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/rcsinfo/rcsinfo.perl b/Master/texmf-dist/doc/latex/rcsinfo/rcsinfo.perl new file mode 100644 index 00000000000..895adb95fbc --- /dev/null +++ b/Master/texmf-dist/doc/latex/rcsinfo/rcsinfo.perl @@ -0,0 +1,282 @@ + +############################################################################### +# RCSINFO.PERL +# Copyright 1995, Dr. Juergen Vollmer <Juergen.Vollmer@informatik-vollmer.de> +# +# Extension to LaTeX2HTML to translate LaTeX commands of the +# rcsinfo +# package to equivalent HTML commands. +# +# This is file `rcsinfo.perl', +# generated with the docstrip utility. +# +# The original source files were: +# +# rcsinfo.dtx (with options: `perl') +# +# IMPORTANT NOTICE: +# +# For the copyright see the source file. +# +# Any modified versions of this file must be renamed +# with new filenames distinct from rcsinfo.perl. +# +# For distribution of the original source see the terms +# for copying and modification in the file rcsinfo.dtx. +# +# This generated file may be distributed as long as the +# original source files, as listed above, are part of the +# same distribution. (The sources need not necessarily be +# in the same archive or directory.) +# +# $Id: rcsinfo.dtx,v 1.7 2005/02/25 08:37:03 vollmer draft vollmer $ +# +############################################################################### + +package rcsinfo; + +($Dummy1,$PackageVersionDate,$PackageVersionTime,$Dummy2) = + split (/ /,'$Date: 2005/02/25 08:37:03 $'); + +print "\n\t rcsinfo style interface for LaTeX2HTML, $PackageVersionDate\n"; + +# set defaults options +$OptionFancy = 1; +$OptionToday = 1; +$OptionLong = 1; + +# set default values +$Date = `date '+%Y/%m/%d'`; +$Time = `date '+%H:%M:%S'`; +$File = "--sourcefile--"; +$Revision = "--revision--"; +$Owner = "--owner--"; +$Status = "--status--"; +$Locker = "--locker--"; +$Year = `date '+%Y'`; +$Month = `date '+%m'`; +$Day = `date '+%d'`; +$LongDate = $Date; + +sub SetAddress +{ + $main::address_data[1] = "Revision: $rcsinfo::Revision, $rcsinfo::LongDate"; + # Supply your own string if you don't like the default <Name> <Date> + $main::ADDRESS = "<I>$main::address_data[0] <BR>\n$main::address_data[1]</I>"; +} +if ($SetAddressProc == "") { + $SetAddressProc = \&rcsinfo::SetAddress; +} +sub make_cmds +{ + my $cmd; + foreach $cmd (File,Revision,Date,Time,Owner,Status,Locker,Year,Month,Day,LongDate) { + eval "sub main::do_cmd_rcsInfo$cmd { " + . 'my $val = $rcsinfo::' . "$cmd; " +# . 'printf STDERR "\ndo_cmd_rcsInfo%s=%s\n", ' . $cmd .', $val;' + . "join('',\$val,\$_[0]);" + . "}"; + } +} + +@GermanMonthName = ('','Januar','Februar','März','April','Mai','Juni','Juli', + 'August','September','Oktober','November','Dezember'); +@EnglishMonthName = ('','January','February','March','April','May','June','July', + 'August','September','October','November','December'); +@FrenchMonthName = ('','Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre', + 'Décembre'); + +############################################################################### + +package main; + +# handling package options +sub do_rcsinfo_fancyhdr { $rcsinfo::OptionFancy = 1; } +sub do_rcsinfo_fancy { $rcsinfo::OptionFancy = 1; } +sub do_rcsinfo_nofancy { $rcsinfo::OptionFancy = 0; } +sub do_rcsinfo_today { $rcsinfo::OptionToday = 1; } +sub do_rcsinfo_notoday { $rcsinfo::OptionToday = 0; } +sub do_rcsinfo_short { $rcsinfo::OptionLong = 0; } +sub do_rcsinfo_long { $rcsinfo::OptionLong = 1; } +sub do_rcsinfo_datehyphen { } # nothing just ignore it + +# handling of LaTeX commands +sub do_cmd_rcsInfo +{ + + local ($_) = @_; + + # printf STDERR "\ndo_cmd_rcsInfo\n"; + + # see latex2html, procedure: substitute_meta_cmds, process_body_newcommand + # the format of the variable $new_command{cmd} is: + # $new_command{$cmd} = join(':!:',$argn,$body,$opt); + # note: opt = "}" means: Flag for no optional arg + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoFILE}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoREVISION}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoYEAR}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoMONTH}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoDAY}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoTIME}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoOWNER}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoSTATUS}; + # printf STDERR "xxxxxxxxxxx `%s'\n", $new_command{rcsInfoLOCKER}; + + # the following assumes: LaTeX2HTML Version 99.1 release (March 30, 1999) + # may be later + my ($argn, $opt); + if (exists $new_command{rcsInfoFILE}) { + ($argn, $rcsinfo::File, $opt) = split(/:!:/, $new_command{rcsInfoFILE}); + } else { + $rcsinfo::File = $File + } + if (exists $new_command{rcsInfoREVISION}) { + ($argn, $rcsinfo::Revision, $opt) = split(/:!:/, $new_command{rcsInfoREVISION}); + } else { + $rcsinfo::Revision = $Revision + } + if (exists $new_command{rcsInfoYEAR}) { + ($argn, $rcsinfo::Year, $opt) = split(/:!:/, $new_command{rcsInfoYEAR}); + } else { + $rcsinfo::Year = $Year + } + if (exists $new_command{rcsInfoMONTH}) { + ($argn, $rcsinfo::Month, $opt) = split(/:!:/, $new_command{rcsInfoMONTH}); + } else { + $rcsinfo::Month = $Month + } + if (exists $new_command{rcsInfoDAY}) { + ($argn, $rcsinfo::Day, $opt) = split(/:!:/, $new_command{rcsInfoDAY}); + } else { + $rcsinfo::Day = $Day + } + if (exists $new_command{rcsInfoTIME}) { + ($argn, $rcsinfo::Time, $opt) = split(/:!:/, $new_command{rcsInfoTIME}); + } else { + $rcsinfo::Time = $Time + } + if (exists $new_command{rcsInfoOWNER}) { + ($argn, $rcsinfo::Owner, $opt) = split(/:!:/, $new_command{rcsInfoOWNER}); + } else { + $rcsinfo::Owner = $Owner + } + if (exists $new_command{rcsInfoSTATUS}) { + ($argn, $rcsinfo::Status, $opt) = split(/:!:/, $new_command{rcsInfoSTATUS}); + } else { + $rcsinfo::Status = $Status + } + if (exists $new_command{rcsInfoLOCKER}) { + ($argn, $rcsinfo::Locker, $opt) = split(/:!:/, $new_command{rcsInfoLOCKER}); + } else { + $rcsinfo::Locker = $Locker + } + + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::File; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Revision; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Year; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Month; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Day; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Time; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Owner; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Status; + # printf STDERR "yyyyyyyyyyy `%s'\n", $rcsinfo::Locker; + + # the following code is for oldfashioned latex2hmtl, not anymore supported + # format of $_: + # vvvvvv that's text following the RCS-Id-string + # <#nr#>.....<#nr>...... + # ^ ^ ^ that's the RCS-Id-string +# my ($Nr,$IdString,$Rest) = /(<#\d+#>)(.*)\1(.*)/s ; + + # The Id-String may contain various tags, remove them +# $IdString =~ s/<[^>]*>//g; + + # The Id-String may contain various tags, remove them +# $IdString =~ s/<[^>]*>//g; + + # split the Id-string +# my ($id,$file,$revision,$date,$time,$owner,$status,$locker) = split(/\s/,$IdString); + + # remove trailing ,v +# $file =~ s/,v$//; + + # split date +# ($rcsinfo::Year,$rcsinfo::Month,$rcsinfo::Day) = split (/[\-]//,$date); + +# $rcsinfo::Revision = $revision; +# $rcsinfo::File = $file; +# $rcsinfo::Date = $date; +# $rcsinfo::Time = $time; +# $rcsinfo::Owner = $owner; +# $rcsinfo::Status = $status; +# $rcsinfo::Locker = $locker; + + if ($default_language eq 'german' || $default_language eq 'austrian') { + $rcsinfo::LongDate = $rcsinfo::Day . '. ' . + $rcsinfo::GermanMonthName[$rcsinfo::Month] . ' ' . + $rcsinfo::Year; + $rcsInfo::Date = $rcsinfo::Day . '. ' . $rcsinfo::Month . '. ' . $rcsinfo::Year; + } elsif ($default_language eq 'french') { + $rcsinfo::LongDate = $rcsinfo::Day . '. ' . + $rcsinfo::FrenchMonthName[$rcsinfo::Month] . ' ' . + $rcsinfo::Year; + $rcsInfo::Date = $rcsinfo::Day . '. ' .$rcsinfo::Month . '. ' . $rcsinfo::Year; + } else { # english is the default + $rcsinfo::LongDate = $rcsinfo::EnglishMonthName[$rcsinfo::Month] . ' ' . + $rcsinfo::Day . ', ' . + $rcsinfo::Year; + $rcsInfo::Date = $rcsinfo::Year . '/' .$rcsinfo::Month . '/' . $rcsinfo::Day; + } + + if ($rcsinfo::OptionFancy == 1) { + &$rcsinfo::SetAddressProc; + } + rcsinfo::make_cmds(); + + # printf STDERR "xxx $HTML_VERSION, $HTML_OPTIONS\n"; + # remove stuff generated for the $Id: rcsinfo.dtx,v 1.7 2005/02/25 08:37:03 vollmer draft vollmer $-string + # we assume that noting follows the "\rcsInfo $Id....$" + if ($HTML_VERSION >= 3.2) { + /^<tex2html_verbatim_mark>[^\n]*/; + return $'; + } elsif ($HTML_VERSION == 3.1 || $HTML_VERSION == 2.1) { + /^<tex2html_image_mark>[^\n]*/; + return $'; + } else { + if ($HTML_OPTIONS =~ /math/) { + /^<tex2html_verbatim_mark>[^\n]*/; + return $'; + } else { + /^<tex2html_image_mark>[^\n]*/; + return $'; + } + } +} + +# Replace do_cmd_today (\today) using the RCS date. +sub do_cmd_today { + local($today); + if ($rcsinfo::OptionToday == 1) { + $today = $rcsinfo::LongDate; + } else { + if ($default_language eq 'german' || $default_language eq 'austrian') { + $today = (`date "+%m:%d, 20%y"`); + $today =~ s/(\d{1,2}):0?(\d{1,2}),/$2. $rcsinfo::GermanMonthName[$1]/o; + $today =~ s/20([7|8|9]\d{1})/19$1/o; + } elsif ($default_language eq 'french') { + $today = (`date "+%m:%d, 20%y"`); + $today =~ s/(\d{1,2}):0?(\d{1,2}),/$2 $rcsinfo::FrenchMonthName[$1]/o; + $today =~ s/20([7|8|9]\d{1})/19$1/o; + } else { # english is the default + $today = (`date "+%m:%d, 20%y"`); + $today =~ s/(\d{1,2}):0?/$rcsinfo::EnglishMonthName[$1] /o; + $today =~ s/20([7|8|9]\d{1})/19$1/o; + } + } + join('',$today,$_[0]); +} + +1; + +############################################################################### |