summaryrefslogtreecommitdiff
path: root/apps/plugins/puzzles/genhelp.sh
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/puzzles/genhelp.sh')
-rwxr-xr-xapps/plugins/puzzles/genhelp.sh70
1 files changed, 35 insertions, 35 deletions
diff --git a/apps/plugins/puzzles/genhelp.sh b/apps/plugins/puzzles/genhelp.sh
index f243a1d..293c58b 100755
--- a/apps/plugins/puzzles/genhelp.sh
+++ b/apps/plugins/puzzles/genhelp.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# usage: ./genhelp.sh > helpcontent.sh
+# usage: ./genhelp.sh
#
# expects halibut to be installed in $PATH:
# http://www.chiark.greenend.org.uk/~sgtatham/halibut
@@ -16,37 +16,37 @@ cat puzzles.txt.tmp | awk 'BEGIN { a=1; } /Appendix A/ { a = 0; } a==1' > puzzle
rm puzzles.txt.tmp
-cat <<EOF
-/* auto-generated by genhelp.sh */
-/* DO NOT EDIT! */
-const int help_chapteroffsets[] = {
-EOF
-
-# generate chapter offset list
-cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}'
-
-cat <<EOF
-};
-
-const char help_text[] =
-EOF
-
-# get starting byte offset
-start=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; print x + 1; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | head -n 1`
-
-# generate content
-cat puzzles.txt | tail -c +$start | awk '{gsub(/\\/,"\\\\"); if($0 !~ /Chapter/ && substr($0, 1, 1) == "#") begin = "\\n"; else begin = ""; last = substr($0, length($0), 1); if(length($0) == 0 || last == "|" || last == "-" || (term == "\\n" && last == "3")) term="\\n"; else term = " "; print "\"" begin $0 term "\"";}'
-
-cat <<EOF
-;
-
-EOF
-
-# length of longest chapter (not including null)
-maxlen=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | awk 'BEGIN { max = 0; last = 0; } { if($0 - last > max) max = $0 - last; last = $0; } END { print max }'`
-
-# remember number of chapters
-num=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | wc -l`
-
-echo "const int help_maxlen = "$maxlen";"
-echo "const int help_numchapters = "$num";"
+# now split into different files
+mkdir -p help
+
+cat puzzles.txt | awk 'BEGIN { file = "none"; }
+ /#Chapter/ {
+ if($0 !~ / 1:/ && $0 !~ / 2:/)
+ {
+ if(file != "none")
+ print ";" > file;
+ file = "help/"tolower($3$4)".c";
+ if($3 ~ "Rectangles")
+ file = "help/rect.c";
+ print "/* auto-generated by genhelp.sh */" > file;
+ print "/* DO NOT EDIT! */" > file;
+ print "const char help_text[] = " > file; }
+ }
+ file != "none" {
+ gsub(/\\/,"\\\\");
+ if($0 !~ /Chapter/ && substr($0, 1, 1) == "#")
+ begin = "\\n";
+ else begin = "";
+ last = substr($0, length($0), 1);
+ if(length($0) == 0 || last == "|" || last == "-" || (term == "\\n" && last == "3"))
+ term="\\n";
+ else term = " ";
+ print "\"" begin $0 term "\"" > file;
+ }
+ END {
+ print ";" > file;
+ }
+'
+
+# generate quick help from gamedesc.txt
+cat src/gamedesc.txt | awk -F ":" '{print "const char quick_help_text[] = \""$5"\";" >> "help/"$1".c" }'