aboutsummaryrefslogtreecommitdiffstats
path: root/doc/utils/contents.awk
diff options
context:
space:
mode:
Diffstat (limited to 'doc/utils/contents.awk')
-rw-r--r--doc/utils/contents.awk109
1 files changed, 109 insertions, 0 deletions
diff --git a/doc/utils/contents.awk b/doc/utils/contents.awk
new file mode 100644
index 000000000..5cc07f246
--- /dev/null
+++ b/doc/utils/contents.awk
@@ -0,0 +1,109 @@
+# table-of-contents extractor
+# Copyright (C) 1999 Sandy Harris.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# RCSID $Id: contents.awk,v 1.1 2004/03/15 20:35:24 as Exp $
+BEGIN {
+ # initialise indent counter
+ indent = 0
+ # define variables for section breaks
+ b0 = "==================================================="
+ b1 = "---------------------------------------------------"
+ b2 = "\t------------------------------------------"
+ # TURN OFF HTML formatting
+ print "<html>"
+ print "<body>"
+ print "<pre>"
+ # print a header
+ blurb()
+ print "Section headings printed, indentation shows structure"
+}
+# start of new file
+FNR == 1 {
+ print b0
+ print "HTML file: " "<a href=\"" FILENAME "\">" FILENAME "</a>"
+ print b1
+}
+# print header lines
+# actual printing is done by tagged() function
+# which adds tag if last line was <a name=...>
+$0 ~/<h1>/ {
+ text = $0
+ tabs = ""
+ gsub(/.*<h1>/, "", text)
+ gsub(/<\/h1>/, "", text)
+ tagged( text )
+}
+$0 ~/<h2>/ {
+ text = $0
+ tabs = "\t"
+ gsub(/.*<h2>/, "", text)
+ gsub(/<\/h2>/, "", text)
+ tagged(text)
+}
+$0 ~/<h3>/ {
+ text = $0
+ tabs = "\t\t"
+ gsub(/.*<h3>/, "", text)
+ gsub(/<\/h3>/, "", text)
+ tagged(text)
+}
+$0 ~/<h4>/ {
+ text = $0
+ tabs = "\t\t\t"
+ gsub(/.*<h4>/, "", text)
+ gsub(/<\/h4>/, "", text)
+ tagged( text )
+}
+# if current line is not header
+# and we have stored tag from <a name=..> line
+# make link to that tag
+$0 !~ /<h[1-4]/ {
+ if( length(name) )
+ print "[ <a href=\"" FILENAME "#" name "\">" name "</a>" " ]"
+ name = ""
+}
+# for <a name=whatever> lines
+# save name in a variable
+# not printed until we see next line
+$0 ~ /<a name=.*>/ {
+ name = $0
+ # strip anything before or after name tag
+ gsub(/.*<a name=/, "", name)
+ gsub(/>.*/, "", name)
+ # strip quotes off name
+ gsub(/^"/, "", name)
+ gsub(/"$/, "", name)
+}
+END {
+ print b0
+ blurb()
+ print "Docs & script by Sandy Harris"
+ print "</pre>"
+ print "</body>"
+ print "</html>"
+}
+
+function tagged(text) { # print header with tag if available
+ if( length(name) ) # > 0 if previous line was a name
+ print tabs "<a href=\"" FILENAME "#" name "\">" text "</a>"
+ else
+ print tabs text
+ name = ""
+}
+
+function blurb() {
+ print "Linux FreeSWAN HTML documents"
+ print "Automatically generated Table of Contents"
+ print "Bug reports to the mailing list: linux-ipsec@clinet.fi"
+ print "<p>"
+}