#!/usr/bin/perl
###############################################################################
# #
# Name : list_to_html #
# Author : Chris Koeritz #
# Rights : Copyright (C) 1996-$now by Author #
# #
# Purpose: #
# #
# Munges multiple files together into one output file with html formatting #
# that makes it appropriate for a numbered list. #
# #
###############################################################################
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free #
# Software Foundation; either version 2 of the License or (at your option) #
# any later version. See: "http://www.gruntose.com/Info/GNU/GPL.html" for a #
# version of the License. Please send any updates to "fred@gruntose.com". #
###############################################################################
require "filename_helper.pl";
# this is our default output filename for the html list.
local($output_file) = "text_listing.html";
# make sure they gave us some files to process.
if ($#ARGV < 0) {
&instructions;
exit 0;
}
# clear and initialize our output file before doing anything else.
open(O_FILE, ">" . $output_file);
# add in the boilerplate for an html document and our initial nesting level.
print O_FILE "\
\
\
\
generated html from list_to_html script\
\
\
\
\
\n";
close O_FILE;
# now iterate over the list of files and dump them to our output file.
local($filename);
foreach $filename (&glob_list(@ARGV)) {
$chewed_filename = &basename($filename);
$chewed_filename =~ s/_/ /g;
$chewed_filename =~ s/\.[a-zA-Z][a-zA-Z][a-zA-Z]$//;
$chewed_filename =~ s/\.[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]$//;
#print "new filename is $chewed_filename\n";
&do_dump($filename, $chewed_filename, $output_file);
}
open(O_FILE, ">>" . $output_file);
# return from first nesting and close out the document.
print O_FILE "\n
\
\
\n";
close O_FILE;
exit 0;
############################################################################
# prints help out on using this amazing program.
sub instructions {
print "
list_to_html: this program needs a set of filenames to print out in html
list format. the resulting information will be placed in a file called
\"$output_file\" in the current directory.
";
}
############################################################################
# do_dump: prints the contents of the first parameter's file out by
# concatenating it onto the second parameter's file. since it's an append,
# if you mess up, the file will at least not be overwritten.
sub do_dump {
($to_dump, $chewed_name, $output_file) = @_;
# print "dumpfile=$to_dump and chewed=$chewed_name and outfile=$output_file\n";
if (&basename($to_dump) eq &basename($output_file)) {
# we don't ever dump to the same file as we're outputting to. that would
# be quite silly and would make the file pretty useless, as well as
# rendering the original file corrupted possibly.
return;
}
$header = "
%1
";
$footer = "
";
$header_copy = $header;
$header_copy =~ s/%1/$chewed_name/;
##print $header_copy;
open(TO_DUMP, "<$to_dump");
open(OUT, ">>$output_file");
print OUT $header_copy;
while () {
local($line) = $_;
#local($i);
#for ($i = 0; $i < length($line); $i++) {
#$curr_char = substr($line, $i, 1);
#print "[$curr_char]";
#}
#print "\n";
local($curr_char) = 0;
#print "start len=" . length($line) . "\n";
do {
#print "chopping\n";
chop $line; # remove end of line char(s).
$curr_char = substr($line, length($line) - 1, 1);
# get new last char in string.
} while ( ($curr_char eq "\r") || ($curr_char eq "\n") );
local($do_print) = 1;
if (length($line) == 0) {
#continue; # skip the first blank lines.
$do_print = 0; #no continue statement??
} else {
$just_started = 0;
# a non-blank line has been seen. now we reset our flag so we stop
# checking for blank lines.
}
if ($do_print) { print OUT "" . $line . "\n"; }
}
print OUT $footer;
close OUT;
}