#!/usr/bin/perl -w use strict; use Getopt::Long; ((my $progname = $0) =~ s/^.*(\/|\\)//ig); # basename $0 # Parse options my $no_verbose_progress = 0; my $usage = 0; GetOptions('quiet' => \$no_verbose_progress, # be quiet 'help|?' => \$usage # help! ); # Print usage if ($usage) { usage(); } unless ($ARGV[0]) { print "Specify a CSV file name as the program's argument (e.g. qm.csv)\n"; usage(); } open (CSV, "< $ARGV[0]"); # Start writing table file, and write table header open TABLE, "> qm.html" or die $!; print TABLE << "END"; 1623/204 Question Mark List

Tunnocksschacht Question Mark list

Extant QM's -- Finished QM's -- 258 index

Conventions

For question mark list conventions, see here.

Question Marks

END ; # starting to read in csv file, eat header line my ($number, $grade, $area, $desc, $ref, $station, $completion); my $incomplete=""; my $complete=""; my $templine; my $colon; my @stationbits; print "Progress: *"; my $thisyear = -1; my $qmyear; # While loop which reads in each line of csv file while () { chomp; # Split single line into all the fields ($number, $grade, $area, $desc, $ref, $station, $completion) = &parse_csv($_); if (!$completion) { $completion = ""; } $completion =~ s/\r//; if (!$station) { $station = ""; } if (!$ref) { $ref = ""; } if (!$grade) { $grade = ""; } if (!$desc) { $desc = ""; } if (!$area) { $area = ""; } if (($completion ne "") and ($ref ne "")) { print "\n?? Backlink for completed $number\n"; print "Ref is '$ref' and completion is '$completion'\n"; } $qmyear = substr($number, 1, 4); if($qmyear != $thisyear) { $complete = "$complete\n

$qmyear

\n"; $incomplete = "$incomplete\n

$qmyear

\n"; $thisyear = $qmyear; } # Last field of CSV file can have weird form-feeds etc. Kill them # Construct XHTML line if ($ref) { $templine = "
$number"; } else { $templine = "
$number"; } $templine = "$templine $grade
"; $colon = ""; if ($completion || $desc) { $colon = ": "; } @stationbits = split(/\./, $station); if ($#stationbits > 0) { $station = "$stationbits[-2].$stationbits[-1]"; } if ($station) { if ($area) { $templine = "$templine$area, near $station$colon"; } else { $templine = "${templine}Near $station$colon"; } } elsif ($area) { $templine = "$templine$area$colon" } if ($completion) { $complete = "$complete$templine$completion
\n"; } else { $incomplete = "$incomplete$templine$desc\n"; } print "*"; } print TABLE << "END";

Extant QMs

$incomplete

Completed QMs

$complete

END close TABLE; print "\nInformation: Done\n"; # Parse the CSV file sub parse_csv { my @fields=split /\t/; my @unquoted=(); foreach $_ (@fields) { $_ =~ s/\"//g; push (@unquoted, $_); } return @unquoted; } # Usage sub usage { print << "EOF"; USAGE: $progname [-options] -q, --quiet Be quiet about progress -h, --help Show this message EOF exit(0); }