#!/usr/bin/perl -w
# read list of files on command line in form "Slide*.JPG",
# print a frame-type index plus HTML files for each slide.
# if you want the files sorted in some way, do that before
# calling this script.
use File::Basename;
use strict;
use subs qw/doslides mkframe mktoc/;
my $myname = basename($0, ".pl");
my $date = scalar localtime;
my $toc;
my @files = ();
die "usage: $0 JPG-files\n" unless @ARGV;
#
# Get list of slides from command line.
#
foreach (@ARGV) {
if (/\.jpg$/i) {
push (@files, $_);
}
}
#
# Real work starts here.
#
mkframe($files[0]); # top-level frame index
mktoc(@files); # table of contents on left panel
doslides(@files); # write each slide
exit(0);
# ---------------------------------------------------------------------
sub doslides {
my @f = @_;
my $fh;
my @htm = ();
my $name;
foreach (@f) {
if (/(.*)\.jpg/i) {
$name = $1;
push (@htm, "$name.htm");
}
}
my $k = 0;
foreach (@f) {
next unless /(.*)\.jpg/i;
my $img = $_;
my $name = $1;
my $kn = $k + 1;
my $kp = $k - 1;
$_ = "$name.htm";
# Create next and previous links.
my $nlink;
my $plink;
if ($k > 0) {
$plink = qq!<< Prev!;
} else {
$plink = qq! !;
}
if ($k < $#f) {
$nlink = qq!Next >>!;
} else {
$nlink = qq! !;
}
# Write the file.
open($fh, "> $_") || die "$_: $!\n";
print $fh <<"EndFile";
Slide $k
$plink
Slide $kn
$nlink
EndFile
close($fh);
$k++;
}
}
# ---------------------------------------------------------------------
sub mkframe {
my $first = shift;
my $fh;
open($fh, "> index.htm") || die "index.htm: $!\n";
print $fh <<"EndIndex";
Presentation
EndIndex
close($fh);
}
# ---------------------------------------------------------------------
sub mktoc {
my @f = @_;
my $fh;
open($fh, "> toc.htm") || die "toc.htm: $!\n";
print $fh <<"EndHeader";
Slides
EndHeader
my $k = 0;
my $name;
foreach (@f) {
if (/(.*)\.jpg/i) {
$name = $1;
$_ = "$name.htm";
$k++;
print $fh "