diff --git a/smkridge/258/tablize-qms.pl b/smkridge/258/tablize-qms.pl new file mode 100644 index 000000000..2f026bac3 --- /dev/null +++ b/smkridge/258/tablize-qms.pl @@ -0,0 +1,184 @@ +#!/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); +}