o Made several changes in response to suggestions in Wiki.
[project-aon.git] / scripts / gbtopdaxhtml.pl
1 #!/bin/perl -w
2 #
3 # gbtoxhtml.pl
4 # 10 April 2002
5 #
6 # Creates XHTML gamebook from XML source.
7 #
8 # $Id$
9 #
10 # $Log$
11 # Revision 1.1  2005/04/26 04:47:54  jonathan.blake
12 # Initial revision
13 #
14 # Revision 1.1  2002/10/22 16:20:26  jblake
15 # Initial revision
16 #
17 #
18 # Revision 1.3  2002/10/20 05:47:50  jblake
19 # Added Highway Holocaust to the book list.
20 #
21 # Revision 1.2  2002/10/18 15:42:25  jblake
22 # Added Grey Star the Wizard to the book list.
23 #
24 # Revision 1.1  2002/10/18 15:38:41  jblake
25 # Initial revision
26 #
27 #####
28
29 use strict;
30
31 ##
32
33 my $PROGRAM_NAME    = "gbtoxhtml";
34 my $PATH_PREFIX     = "$ENV{'HOME'}/aon/data";
35 my $XML_PATH        = "xml";
36 my $BOOK_PATH       = "xhtml-pda";
37
38 ##
39
40 my $CREATE_CSS = "$ENV{'HOME'}/aon/bin/create-pdacss.pl";
41 my $RXP        = "$ENV{'HOME'}/aon/bin/rxp";
42 my $CP         = "/bin/cp";
43 my $MV         = "/bin/mv";
44 my $TAR        = "/usr/local/bin/tar";
45 my $ZIP        = "/bin/zip";
46 my $BZIP2      = "/bin/bzip2";
47 my $JAVA       = "/usr/j2sdk1_3_0_02/bin/java";
48 my $RM         = "/bin/rm";
49
50 ##
51
52 my $XML_SOURCE        = "";
53 my $TEXT_COLOR        = "";
54 my $LINK_COLOR        = "";
55 my $SCROLL_BASE_COLOR = "";
56 my $USE_ILLUSTRATORS  = "";
57
58 ##
59
60 unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} BOOK_CODE\n"; }
61
62 print "Reminder:\n\tDid you comment out the LaTeX special character\n\tdeclarations in the book's XML file?\n";
63
64 my( $bookCode ) = @ARGV;
65
66 if( $bookCode eq "01fftd" ) {
67     $XML_SOURCE        = "01fftd.xml";
68     $BOOK_PATH         .= "/lw/01fftd";
69     $TEXT_COLOR        = "#003300";
70     $LINK_COLOR        = "#006633";
71     $SCROLL_BASE_COLOR = "#003300";
72     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
73 }
74 elsif( $bookCode eq "02fotw" ) {
75     $XML_SOURCE        = "02fotw.xml";
76     $BOOK_PATH         .= "/lw/02fotw";
77     $TEXT_COLOR        = "#003333";
78     $LINK_COLOR        = "#009999";
79     $SCROLL_BASE_COLOR = "#003333";
80     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
81 }
82 elsif( $bookCode eq "03tcok" ) {
83     $XML_SOURCE        = "03tcok.xml";
84     $BOOK_PATH         .= "/lw/03tcok";
85     $TEXT_COLOR        = "#003366";
86     $LINK_COLOR        = "#0099cc";
87     $SCROLL_BASE_COLOR = "#003366";
88     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
89 }
90 elsif( $bookCode eq "04tcod" ) {
91     $XML_SOURCE        = "04tcod.xml";
92     $BOOK_PATH         .= "/lw/04tcod";
93     $TEXT_COLOR        = "#000033";
94     $LINK_COLOR        = "#000099";
95     $SCROLL_BASE_COLOR = "#000033";
96     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
97 }
98 elsif( $bookCode eq "05sots" ) {
99     $XML_SOURCE        = "05sots.xml";
100     $BOOK_PATH         .= "/lw/05sots";
101     $TEXT_COLOR        = "#330000";
102     $LINK_COLOR        = "#cc9900";
103     $SCROLL_BASE_COLOR = "#330000";
104     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
105 }
106 elsif( $bookCode eq "06tkot" ) {
107     $XML_SOURCE        = "06tkot.xml";
108     $BOOK_PATH         .= "/lw/06tkot";
109     $TEXT_COLOR        = "#404000";
110     $LINK_COLOR        = "#999900";
111     $SCROLL_BASE_COLOR = "#404000";
112     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
113 }
114 elsif( $bookCode eq "07cd" ) {
115     $XML_SOURCE        = "07cd.xml";
116     $BOOK_PATH         .= "/lw/07cd";
117     $TEXT_COLOR        = "#003300";
118     $LINK_COLOR        = "#00cc66";
119     $SCROLL_BASE_COLOR = "#003300";
120     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
121 }
122 elsif( $bookCode eq "08tjoh" ) {
123     $XML_SOURCE        = "08tjoh.xml";
124     $BOOK_PATH         .= "/lw/08tjoh";
125     $TEXT_COLOR        = "#334033";
126     $LINK_COLOR        = "#669966";
127     $SCROLL_BASE_COLOR = "#334033";
128     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
129 }
130 elsif( $bookCode eq "09tcof" ) {
131     $XML_SOURCE        = "09tcof.xml";
132     $BOOK_PATH         .= "/lw/09tcof";
133     $TEXT_COLOR        = "#330000";
134     $LINK_COLOR        = "#ff9900";
135     $SCROLL_BASE_COLOR = "#330000";
136     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
137 }
138 elsif( $bookCode eq "10tdot" ) {
139     $XML_SOURCE        = "10tdot.xml";
140     $BOOK_PATH         .= "/lw/10tdot";
141     $TEXT_COLOR        = "#330000";
142     $LINK_COLOR        = "#ff0000";
143     $SCROLL_BASE_COLOR = "#330000";
144     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
145 }
146 elsif( $bookCode eq "11tpot" ) {
147     $XML_SOURCE        = "11tpot.xml";
148     $BOOK_PATH         .= "/lw/11tpot";
149     $TEXT_COLOR        = "#333300";
150     $LINK_COLOR        = "#808066";
151     $SCROLL_BASE_COLOR = "#333300";
152     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
153 }
154 elsif( $bookCode eq "12tmod" ) {
155     $XML_SOURCE        = "12tmod.xml";
156     $BOOK_PATH         .= "/lw/12tmod";
157     $TEXT_COLOR        = "#330000";
158     $LINK_COLOR        = "#990000";
159     $SCROLL_BASE_COLOR = "#330000";
160     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
161 }
162 elsif( $bookCode eq "13tplor" ) {
163     $XML_SOURCE        = "13tplor.xml";
164     $BOOK_PATH         .= "/lw/13tplor";
165     $TEXT_COLOR        = "#333300";
166     $LINK_COLOR        = "#666633";
167     $SCROLL_BASE_COLOR = "#333300";
168     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
169 }
170 elsif( $bookCode eq "15tdc" ) {
171     $XML_SOURCE        = "15tdc.xml";
172     $BOOK_PATH         .= "/lw/15tdc";
173     $TEXT_COLOR        = "#000033";
174     $LINK_COLOR        = "#6699cc";
175     $SCROLL_BASE_COLOR = "#000033";
176     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
177 }
178 elsif( $bookCode eq "01gstw" ) {
179     $XML_SOURCE        = "01gstw.xml";
180     $BOOK_PATH         .= "/gs/01gstw";
181     $TEXT_COLOR        = "#330066";
182     $LINK_COLOR        = "#9900ff";
183     $SCROLL_BASE_COLOR = "#330066";
184 }
185 elsif( $bookCode eq "01hh" ) {
186     $XML_SOURCE        = "01hh.xml";
187     $BOOK_PATH         .= "/fw/01hh";
188     $TEXT_COLOR        = "#330066";
189     $LINK_COLOR        = "#9900ff";
190     $SCROLL_BASE_COLOR = "#330066";
191 }
192 elsif( $bookCode eq "rh" ) {
193     $XML_SOURCE        = "rh.xml";
194     $BOOK_PATH         .= "/misc/rh";
195     $TEXT_COLOR        = "#400000";
196     $LINK_COLOR        = "#339933";
197     $SCROLL_BASE_COLOR = "#400000";
198 }
199 else{ die "Error:\n\tUknown book code ($bookCode).\n"; }
200
201 chdir( "$PATH_PREFIX" ) or die( "Cannot open Project Aon data directory \"$PATH_PREFIX\": $!" );
202 print STDERR "Validating XML... ";
203 system( "$RXP", "-Vs", "$XML_PATH/$XML_SOURCE" ) == 0 or die( "failed\n" );
204 print STDERR "succeeded\n";
205
206 -d "$BOOK_PATH" or die( "Book directory does not exist or isn't a directory: $!\n" );
207
208 print STDERR "Removing previous files in \"$PATH_PREFIX/$BOOK_PATH/\"...\n";
209 qx{$RM $BOOK_PATH/*};
210 print STDERR "Processing XSL Transformation...\n";
211 print STDERR "Warning:\n\tdiscarding top-level output of transformation\n";
212 print qx{$JAVA org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/xhtml-pda.xsl -OUT /dev/null -PARAM book-path \"$PATH_PREFIX/$BOOK_PATH\" -PARAM text-color \"$TEXT_COLOR\" -PARAM link-color \"$LINK_COLOR\" -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
213
214 print STDERR "Creating CSS\n";
215 print qx{$CREATE_CSS $BOOK_PATH \"$TEXT_COLOR\" \"\#ffffe6\" \"$SCROLL_BASE_COLOR\" \"\#e6e6cc\" \"\#ffffe6\" \"$LINK_COLOR\" \"$LINK_COLOR\" \"\#e6e6cc\" \"$LINK_COLOR\"};
216
217 print STDERR "Copying archived image files...\n";
218 qx{$CP images/$BOOK_PATH/*gif images/$BOOK_PATH/*jpg $BOOK_PATH};