Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1#!/bin/sh
  2#
  3# Usage: sh htmlqqz.sh file
  4#
  5# Extracts and converts quick quizzes in a proto-HTML document file.htmlx.
  6# Commands, all of which must be on a line by themselves:
  7#
  8#	"<p>@@QQ@@": Start of a quick quiz.
  9#	"<p>@@QQA@@": Start of a quick-quiz answer.
 10#	"<p>@@QQE@@": End of a quick-quiz answer, and thus of the quick quiz.
 11#	"<p>@@QQAL@@": Place to put quick-quiz answer list.
 12#
 13# Places the result in file.html.
 14#
 15# This program is free software; you can redistribute it and/or modify
 16# it under the terms of the GNU General Public License as published by
 17# the Free Software Foundation; either version 2 of the License, or
 18# (at your option) any later version.
 19#
 20# This program is distributed in the hope that it will be useful,
 21# but WITHOUT ANY WARRANTY; without even the implied warranty of
 22# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 23# GNU General Public License for more details.
 24#
 25# You should have received a copy of the GNU General Public License
 26# along with this program; if not, you can access it online at
 27# http://www.gnu.org/licenses/gpl-2.0.html.
 28#
 29# Copyright (c) 2013 Paul E. McKenney, IBM Corporation.
 30
 31fn=$1
 32if test ! -r $fn.htmlx
 33then
 34	echo "Error: $fn.htmlx unreadable."
 35	exit 1
 36fi
 37
 38echo "<!-- DO NOT HAND EDIT. -->" > $fn.html
 39echo "<!-- Instead, edit $fn.htmlx and run 'sh htmlqqz.sh $fn' -->" >> $fn.html
 40awk < $fn.htmlx >> $fn.html '
 41
 42state == "" && $1 != "<p>@@QQ@@" && $1 != "<p>@@QQAL@@" {
 43	print $0;
 44	if ($0 ~ /^<p>@@QQ/)
 45		print "Bad Quick Quiz command: " NR " (expected <p>@@QQ@@ or <p>@@QQAL@@)." > "/dev/stderr"
 46	next;
 47}
 48
 49state == "" && $1 == "<p>@@QQ@@" {
 50	qqn++;
 51	qqlineno = NR;
 52	haveqq = 1;
 53	state = "qq";
 54	print "<p><a name=\"Quick Quiz " qqn "\"><b>Quick Quiz " qqn "</b>:</a>"
 55	next;
 56}
 57
 58state == "qq" && $1 != "<p>@@QQA@@" {
 59	qq[qqn] = qq[qqn] $0 "\n";
 60	print $0
 61	if ($0 ~ /^<p>@@QQ/)
 62		print "Bad Quick Quiz command: " NR ". (expected <p>@@QQA@@)" > "/dev/stderr"
 63	next;
 64}
 65
 66state == "qq" && $1 == "<p>@@QQA@@" {
 67	state = "qqa";
 68	print "<br><a href=\"#qq" qqn "answer\">Answer</a>"
 69	next;
 70}
 71
 72state == "qqa" && $1 != "<p>@@QQE@@" {
 73	qqa[qqn] = qqa[qqn] $0 "\n";
 74	if ($0 ~ /^<p>@@QQ/)
 75		print "Bad Quick Quiz command: " NR " (expected <p>@@QQE@@)." > "/dev/stderr"
 76	next;
 77}
 78
 79state == "qqa" && $1 == "<p>@@QQE@@" {
 80	state = "";
 81	next;
 82}
 83
 84state == "" && $1 == "<p>@@QQAL@@" {
 85	haveqq = "";
 86	print "<h3><a name=\"Answers to Quick Quizzes\">"
 87	print "Answers to Quick Quizzes</a></h3>"
 88	print "";
 89	for (i = 1; i <= qqn; i++) {
 90		print "<a name=\"qq" i "answer\"></a>"
 91		print "<p><b>Quick Quiz " i "</b>:"
 92		print qq[i];
 93		print "";
 94		print "</p><p><b>Answer</b>:"
 95		print qqa[i];
 96		print "";
 97		print "</p><p><a href=\"#Quick%20Quiz%20" i "\"><b>Back to Quick Quiz " i "</b>.</a>"
 98		print "";
 99	}
100	next;
101}
102
103END {
104	if (state != "")
105		print "Unterminated Quick Quiz: " qqlineno "." > "/dev/stderr"
106	else if (haveqq)
107		print "Missing \"<p>@@QQAL@@\", no Quick Quiz." > "/dev/stderr"
108}'