diff options
Diffstat (limited to 'apps/plugins/puzzles/genhelp.sh')
| -rwxr-xr-x | apps/plugins/puzzles/genhelp.sh | 70 |
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" }' |