Súbor: [Platon] / vimdoc / vim2html.pl (stiahnutie)
Revízia 1.1.1.1, Wed Apr 3 17:17:50 2002 UTC (23 years ago) by host8
Zmeny od 1.1: +0 -0
[lines]
Imported project vimdoc -- transform vim help files to man, html or
LaTeX format.
|
#!/usr/bin/env perl
# converts vim documentation to simple html
# Sirtaj Singh Kang (taj@kde.org)
# Wed Oct 8 01:15:48 EST 1997
$date = `date`;
chop $date;
%url = ();
# Read the specified tag file. For each tag, convert the filename into a
# hyperlink and save it in an associative array using the tag as the index.
sub readTagFile
{
my($tagfile) = @_;
local( $tag, $file, $name );
open(TAGS,"$tagfile") || die "can't read tags\n";
while( <TAGS> ) {
s/</</g;
s/>/>/g;
# For each line in the tag file, save the first two items
# into backreferences, the first holding the tag itself,
# and the second holding the file containing the tag.
/^(.*)\t(.*)\t/;
$tag = $1;
($file= $2) =~ s/.txt$/.html/g;
$url{ $tag } = "<A HREF=\"$file#$tag\">$tag</A>";
#print "($tag, $file, $tag)\n";
}
close( TAGS );
}
# Convert the specified text file into an html file. For each line in the
# file, convert any words between asterices into page anchors, and convert
# any words between bar characters into hyperlinks.
sub vim2html
{
my( $infile ) = @_;
local( $outfile );
open(IN, "$infile" ) || die "Couldn't read from $infile.\n";
# Strip off any path information from the supplied filename.
# TODO: will this work on DOS paths using a backslash?
($outfile = $infile) =~ s%.*/%%g;
$outfile =~ s/\.txt$//g;
open( OUT, ">$outfile.html" )
|| die "Couldn't write to $outfile.html.\n";
print OUT<<EOF;
<HTML>
<HEAD><TITLE>$outfile</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<H1>Vim Documentation: $outfile</H1>
<HR>
<PRE>
EOF
while( <IN> ) {
s/</</g;
s/>/>/g;
# Convert tags between asterices into page targets
s/\*([^*\s]*)\*/\*<A NAME="$1"><B>$1<\/B><\/A>\*/g;
# Convert tags between bars into hyperlinks
s/\|([^|\s]*)\|/\|$url{$1}\|/g;
print OUT $_;
}
print OUT<<EOF;
</PRE>
<p><i>Generated by vim2html on $date</i></p>
</BODY>
</HTML>
EOF
}
# Display the usage information for the script.
sub usage
{
die<<EOF;
vim2html.pl: converts vim documentation to HTML.
usage:
vim2html.pl <tag file> <text files>
EOF
}
# Main processing
if ( scalar(@ARGV) < 2 ) {
usage();
}
print "Processing tags...\n";
readTagFile( $ARGV[ 0 ] );
# Individually process each file pattern supplied on the command line.
foreach $file ( 1..$#ARGV ) {
# Process each pattern as if it contains wildcards.
while ($filename = <$ARGV[$file]>) {
print "Processing ".$filename."...\n";
vim2html( $filename );
}
}
Platon Group <platon@platon.sk> http://platon.sk/
|