-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild
executable file
·86 lines (76 loc) · 1.81 KB
/
build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#! /usr/bin/perl -w
$NumPuzzles = 7;
sub include_raw {
my ($filename) = @_;
local $/;
open(RAW, $filename) || die "Can't open $filename: $!";
$_ = <RAW>; # slurp
close RAW;
print;
}
sub include_pages {
my ($filename) = @_;
local $/;
open(PUZ, $filename) || die "Can't open $filename: $!";
$page = <PUZ>; # slurp
close PUZ;
for (1..$NumPuzzles) {
$thispage = $page;
# Perform various substitutions on $page
#
$thispage =~ s/IDPUZZLE/$_/g;
$thispage =~ s/IDGRID/grid$_/g;
$thispage =~ s/IDFOUND/found$_/g;
$thispage =~ s/IDPERCENT/percent$_/g;
$thispage =~ s/IDSOLUTION/solution$_/g;
$thispage =~ s/IDNUM/$NumPuzzles/g;
print $thispage;
}
}
sub include_javascript {
my ($filename, $clean) = @_;
# print "include_javascript $filename\n";
open(F, "$filename") || die;
while (<F>) {
next if /load.*enctrie.js/; # remove unit testing load
next if /debugging/; # remove instrumentation
if ($clean or /BEGIN/../END/) {
s/_STANDALONE = .*/_STANDALONE = 0;/;
print;
}
}
close F;
}
while (<>) {
s/IDNUM/$NumPuzzles/g;
if (/PAGES/) {
include_pages("../ebswip/puzzle.tem");
}
elsif (/SOLUTION/) {
include_pages("../ebswip/solution.tem");
}
elsif (/RANDSFC32/) {
include_javascript("../ebswip/rand-sfc32.js");
}
elsif (/BOGGLE/) {
include_javascript("../ebswip/boggle.js");
}
elsif (/ENCTRIE/) {
include_raw("enctrie.js");
}
elsif (/DECIMAL/) {
include_raw("decimal.js");
}
elsif (/^TRIE/) {
include_javascript("Bits.js", 0);
}
elsif (/SOLVER/) {
include_javascript("solver.js");
}
elsif (/HIST/) {
include_javascript("../ebswip/hist.js");
}
else {
print;
}
}