mirror of
https://expo.survex.com/repositories/expoweb/.git/
synced 2025-03-21 01:31:56 +00:00
[svn r6256] Martin wants this. So here it is.
This commit is contained in:
parent
f3949871e0
commit
650c2f1373
175
smkridge/204/tablize-qms.pl
Normal file
175
smkridge/204/tablize-qms.pl
Normal file
@ -0,0 +1,175 @@
|
||||
#!/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, "> qms.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>
|
||||
|
||||
<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;
|
||||
print "Progress: *";
|
||||
|
||||
# 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($_);
|
||||
|
||||
# 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#$number\" id=\"$number\">$number</a>";
|
||||
} else {
|
||||
$templine = "<dt>$number";
|
||||
}
|
||||
|
||||
$templine = "$templine $grade</dt><dd>";
|
||||
|
||||
$colon = "";
|
||||
if ($completion || $desc) {
|
||||
$colon = ": ";
|
||||
}
|
||||
|
||||
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>Incomplete QMs</h3>
|
||||
|
||||
<dl>
|
||||
$incomplete
|
||||
</dl>
|
||||
|
||||
<h3>Completed QMs</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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user