shithub: puzzles

Download patch

ref: 61e711178455dbd0ec8f78d15791b7e25fbf7156
parent: d72db91888c1efddd56c67eee665b0a83c9329eb
author: Simon Tatham <[email protected]>
date: Wed Sep 20 06:22:28 EDT 2017

Build test HTML wrapper pages for the Javascript puzzles.

This should make it less annoying for me to do local testing of the JS
output of a build, before I push a change. There's a new
build.out/jstest directory containing .html files suitable for loading
in a local browser, which refer to the JS files via an appropriate
relative path to the existing build.out/js directory.

--- a/Buildscr
+++ b/Buildscr
@@ -158,6 +158,16 @@
   return puzzles/js/*.js
 enddelegate
 
+# Build a set of wrapping HTML pages for easy testing of the
+# Javascript puzzles. These aren't quite the same as the versions that
+# will go on my live website, because those ones will substitute in a
+# different footer, and not have to link to the .js files with the
+# ../js/ prefix. But these ones should be good enough to just open
+# using a file:// URL in a browser after running a build, and make
+# sure the main functionality works.
+in puzzles do mkdir jstest
+in puzzles/jstest do ../html/jspage.pl --jspath=../js/ /dev/null ../html/*.html
+
 # Set up .htaccess containing a redirect for the archive filename.
 in puzzles do echo "AddType application/octet-stream .chm" > .htaccess
 in puzzles do echo "AddType application/octet-stream .hlp" >> .htaccess
@@ -179,6 +189,7 @@
 deliver puzzles/puzzles.msi puzzles-$(Version)-installer.msi
 deliver puzzles/*.jar java/$@
 deliver puzzles/js/*.js js/$@
+deliver puzzles/jstest/*.html jstest/$@
 deliver puzzles/html/*.html html/$@
 deliver puzzles/html/*.pl html/$@
 deliver puzzles/wwwspans.html $@
--- a/html/jspage.pl
+++ b/html/jspage.pl
@@ -3,6 +3,17 @@
 use strict;
 use warnings;
 
+my $jspath = "";
+while ($ARGV[0] =~ /^-/) {
+    my $opt = shift @ARGV;
+    last if $opt eq "--";
+    if ($opt =~ /^--jspath=(.+)$/) {
+        $jspath = $1;
+    } else {
+        die "jspage.pl: unrecognised option '$opt'\n";
+    }
+}
+
 open my $footerfile, "<", shift @ARGV or die "footer: open: $!\n";
 my $footer = "";
 $footer .= $_ while <$footerfile>;
@@ -62,7 +73,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ASCII" />
 <title>${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection</title>
-<script type="text/javascript" src="${filename}.js"></script>
+<script type="text/javascript" src="${jspath}${filename}.js"></script>
 <style class="text/css">
 /* Margins and centring on the top-level div for the game menu */
 #gamemenu { margin-top: 0; margin-bottom: 0.5em; text-align: center }