From 49fba922eac8c4022b002e340080be9a7134132e Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 30 Mar 2013 20:16:21 +0000 Subject: New front end! To complement the webification of my puzzles via Java applets, here's an alternative webification in Javascript, using Emscripten in asm.js mode (so that as browsers incorporate asm.js optimisation, the game generation should run really fast). [originally from svn r9781] --- html/jspage.pl | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 html/jspage.pl (limited to 'html') diff --git a/html/jspage.pl b/html/jspage.pl new file mode 100644 index 0000000..7172800 --- /dev/null +++ b/html/jspage.pl @@ -0,0 +1,113 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +open my $footerfile, "<", shift @ARGV or die "footer: open: $!\n"; +my $footer = ""; +$footer .= $_ while <$footerfile>; +close $footerfile; + +for my $arg (@ARGV) { + $arg =~ /(.*\/)?([^\/]+)\.html$/ or die; + my $filename = $2; + open my $gamefile, "<", $arg or die "$arg: open: $!\n"; + my $unfinished = 0; + my $docname = $filename; + chomp(my $puzzlename = <$gamefile>); + while ($puzzlename =~ s/^([^:=]+)(=([^:]+))?://) { + if ($1 eq "unfinished") { + $unfinished = 1; + } elsif ($1 eq "docname") { + $docname = $3; + } else { + die "$arg: unknown keyword '$1'\n"; + } + } + my $instructions = ""; + $instructions .= $_ while <$gamefile>; + close $gamefile; + + open my $outpage, ">", "${filename}.html"; + + my $unfinishedtitlefragment = $unfinished ? "an unfinished puzzle " : ""; + my $unfinishedheading = $unfinished ? "

an unfinished puzzle

\n" : ""; + my $unfinishedpara; + my $links; + if ($unfinished) { + $unfinishedpara = < +You have found your way to a page containing an unfinished +puzzle in my collection, not linked from the main +puzzles page. Don't be surprised if things are hard to understand +or don't work as you expect. +EOF + $links = < +Back to main puzzles page (which does not link to this) +EOF + } else { + $unfinishedpara = ""; + $links = < +Full instructions +| +Back to main puzzles page +EOF + } + + print $outpage < + + +${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection + + + +

${puzzlename}

+${unfinishedheading} +

from Simon Tatham's Portable Puzzle Collection

+ +${unfinishedpara} + +
+

+ + + + + + + + +

+

+ + + + + + +
+ +
+
+

+

+ Link to this puzzle: + by game ID + by random seed +

+
+ +${instructions} + +${links} + +${footer} + + +EOF + + close $outpage; +} -- cgit v1.1