summaryrefslogtreecommitdiffstats
path: root/doc/tools/toc-docbook
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tools/toc-docbook')
-rw-r--r--doc/tools/toc-docbook71
1 files changed, 71 insertions, 0 deletions
diff --git a/doc/tools/toc-docbook b/doc/tools/toc-docbook
new file mode 100644
index 00000000..6d16f9b3
--- /dev/null
+++ b/doc/tools/toc-docbook
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2001 by Claudiu Costin
+# <claudiuc@work.ro>
+#
+# 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.
+
+use Getopt::Long;
+
+my $prefix = '';
+my $depth = 1;
+GetOptions( 'prefix=s' => \$prefix,
+ 'depth=i' => \$depth ) || die "Wrong options\n";
+
+$initialdepth = $depth;
+$b3=$b2=$b1="";
+$in_processing=0;
+while (<>) {
+ chop;
+
+ if (/Table of Contents<\/B/) {
+ $in_processing=1;
+ next;
+ }
+ last if (/List of Tables/);
+ next if (!$in_processing);
+
+ if (/HREF=\"(.+)\"/) {
+ $url = $1;
+ }
+ if (/>(.+)<\/A/) {
+ $name=$1;
+ $name =~ s/\"/&quote;/g;
+ $name =~ s/&#8212;/-/g;
+ $name =~ s/^\s*-?\s*//g;
+ $name =~ s/\.$//g;
+# print "NAME $name\n";
+ }
+
+ if ($b3 =~ /><DL/i) {
+ $depth++;
+ $b3=$b2;
+ $b2=$b1;
+ $b1=$_;
+ next;
+ }
+ if ($b3 =~ /><\/DL/i) {
+ $depth--;
+ print " "x($depth-1) . "</tocsect${depth}>\n" if ($depth != $initialdepth-1);
+ $b3=$b2;
+ $b2=$b1;
+ $b1=$_;
+ next;
+ }
+
+ if ($b3 =~ />.*<\/DT/i && $name ne "" && $url ne "") {
+ if ($b1 =~ /><DL/i) {
+ print " "x($depth-1) . "<tocsect${depth} name=\"$name\" url=\"$url\">\n";
+ } else {
+ print " "x($depth-1) . "<tocsect${depth} name=\"$name\" url=\"$url\"/>\n";
+ }
+ }
+
+ # a simulated delay line with 6 cells
+ $b3=$b2;
+ $b2=$b1;
+ $b1=$_;
+}