mirror of
https://expo.survex.com/repositories/expoweb/.git/
synced 2024-11-27 01:32:03 +00:00
7f5479589e
Decided I'd remove the QM list from CVS as well, since it's now autogenerated anyway. Also consolidated Eeyore description - it was described once in the Swings page and once in the Underworld page(oops) and worse still some of the QM's were in one description and some in the other.
200 lines
4.5 KiB
Perl
200 lines
4.5 KiB
Perl
#!/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";
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<!-- *** This file is auto-generated by $progname - edit $ARGV[0] instead -->
|
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
|
|
<title>1623:204 Question Mark List</title>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>Steinbrückenhöhle Question Mark list</h1>
|
|
<div>
|
|
<a href="#qmextant">Extant QM's</a>
|
|
-- <a href="#qmdone">Finished QM's</a>
|
|
-- <a href="204.html">204 index</a>
|
|
</div>
|
|
<hr />
|
|
<h2>Conventions</h2>
|
|
|
|
<p>For question mark list conventions, see <a href="../../qm.html">here</a>.</p>
|
|
|
|
<h2>Area codes</h2>
|
|
|
|
<table>
|
|
<tr><td>Aris</td><td>Ariston Series </td></tr>
|
|
<tr><td>Insig</td><td>Insignificant Chamber and Bonsai Crawl</td></tr>
|
|
<tr><td>NE</td><td>Near End</td></tr>
|
|
<tr><td>NPNG</td><td>No Pain No Gain </td></tr>
|
|
<tr><td>Tree</td><td>Trunk route from The Colonnade via Treeumphant Passage to Cave Tree Chamber</td></tr>
|
|
<tr><td>WE</td><td>White Elephant Series</td></tr>
|
|
<tr><td>Wolp</td><td>Wolpertinger Way and 110 A Day level</td></tr>
|
|
<tr><td>PD</td><td>Pleasure Dome and pitches below</td></tr>
|
|
<tr><td>Sw</td><td>Swings and Roundabouts</td></tr>
|
|
</table>
|
|
|
|
<h2>Question Marks</h2>
|
|
|
|
END
|
|
|
|
<CSV>; # 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 (<CSV>) {
|
|
chomp;
|
|
# Split single line into all the fields
|
|
($number, $grade, $area, $desc, $ref, $station, $completion) = &parse_csv($_);
|
|
if ($completion and $ref)
|
|
{
|
|
print "\n?? Backlink for completed $number\n";
|
|
}
|
|
$qmyear = substr($number, 1, 4);
|
|
if($qmyear != $thisyear)
|
|
{
|
|
$complete = "$complete\n<h3>$qmyear</h3>\n";
|
|
$incomplete = "$incomplete\n<h3>$qmyear</h3>\n";
|
|
$thisyear = $qmyear;
|
|
}
|
|
# Last field of CSV file can have weird form-feeds etc. Kill them
|
|
$completion =~ s/\r//;
|
|
|
|
# Construct XHTML line
|
|
if ($ref) {
|
|
$templine = "<dt><a href=\"$ref#q$number\" id=\"$number\">$number</a>";
|
|
} else {
|
|
$templine = "<dt><a id=\"$number\">$number</a>";
|
|
}
|
|
|
|
$templine = "$templine $grade</dt><dd>";
|
|
|
|
$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</dd>\n";
|
|
} else {
|
|
$incomplete = "$incomplete$templine$desc</dd>\n";
|
|
}
|
|
|
|
print "*";
|
|
}
|
|
|
|
print TABLE << "END";
|
|
<h3><a id="qmextant">Extant QMs</a></h3>
|
|
|
|
<dl>
|
|
$incomplete
|
|
</dl>
|
|
|
|
<h3><a id="qmdone">Completed QMs</a></h3>
|
|
|
|
<dl>
|
|
$complete
|
|
</dl>
|
|
|
|
<hr />
|
|
<ul>
|
|
<li><a href="204.html">Back to 204 index page</a></li>
|
|
<li><a href="../../smkridge/index.htm#id204">Schwarzmooskogel ridge area index and description</a></li>
|
|
<li><a href="../../indxal.htm#id204">Full Index</a></li>
|
|
<li><a href="../../areas.htm">Other Areas</a></li>
|
|
<li><a href="../../index.htm">Back to Expedition Intro page</a></li>
|
|
</ul>
|
|
</body>
|
|
</html>
|
|
END
|
|
|
|
close TABLE;
|
|
print "\nInformation: Done\n";
|
|
|
|
# Parse the CSV file
|
|
sub parse_csv {
|
|
my $line = $_[0];
|
|
my @parsedline = ();
|
|
my $field = '';
|
|
|
|
while ($line =~ m{ \G(?:^|,)
|
|
(?: "((?> [^"]*) (?> "" [^"]*)*)" | ([^",]*)) }gx) {
|
|
if ($2) {
|
|
$field = $2;
|
|
} elsif ($1) {
|
|
$field = $1;
|
|
$field =~ s/""/"/g;
|
|
} else {
|
|
$field = '';
|
|
}
|
|
|
|
push(@parsedline, $field);
|
|
}
|
|
|
|
return(@parsedline);
|
|
}
|
|
|
|
# Usage
|
|
sub usage {
|
|
print << "EOF";
|
|
USAGE: $progname [-options] <CSV file>
|
|
-q, --quiet Be quiet about progress
|
|
-h, --help Show this message
|
|
EOF
|
|
exit(0);
|
|
}
|