]> git.karo-electronics.de Git - karo-tx-linux.git/blob - Documentation/RCU/Design/htmlqqz.sh
x86: Fix non-static inlines
[karo-tx-linux.git] / Documentation / RCU / Design / htmlqqz.sh
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
31 fn=$1
32 if test ! -r $fn.htmlx
33 then
34         echo "Error: $fn.htmlx unreadable."
35         exit 1
36 fi
37
38 echo "<!-- DO NOT HAND EDIT. -->" > $fn.html
39 echo "<!-- Instead, edit $fn.htmlx and run 'sh htmlqqz.sh $fn' -->" >> $fn.html
40 awk < $fn.htmlx >> $fn.html '
41
42 state == "" && $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
49 state == "" && $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
58 state == "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
66 state == "qq" && $1 == "<p>@@QQA@@" {
67         state = "qqa";
68         print "<br><a href=\"#qq" qqn "answer\">Answer</a>"
69         next;
70 }
71
72 state == "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
79 state == "qqa" && $1 == "<p>@@QQE@@" {
80         state = "";
81         next;
82 }
83
84 state == "" && $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
103 END {
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 }'