summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-31 13:29:56 +0200
committerMartin Mares <mj@ucw.cz>2000-05-31 13:29:56 +0200
commit6be13de762cebc9fc5f977e0e3423a9e2ae23a95 (patch)
tree64e9cf18cf9a7573f758439c8be81a39308e0c11 /tools
parentc9c3611734cfb8265586ad8447483cbba9727617 (diff)
downloadbird-6be13de762cebc9fc5f977e0e3423a9e2ae23a95.tar
bird-6be13de762cebc9fc5f977e0e3423a9e2ae23a95.zip
New progdoc script generating SGML output.
Diffstat (limited to 'tools')
-rwxr-xr-xtools/progdoc72
1 files changed, 21 insertions, 51 deletions
diff --git a/tools/progdoc b/tools/progdoc
index ebb97db..2294712 100755
--- a/tools/progdoc
+++ b/tools/progdoc
@@ -2,76 +2,46 @@
$srcdir = $ARGV[0];
-open(OUT, ">prog/index.html") || die "Cannot create output file";
-html_header(*OUT{IO}, "BIRD: The Developer's Guide");
-print OUT "<H1>BIRD: The Developer's Guide</H1>\n";
-print OUT "<UL>\n";
+open(OUT, ">prog.sgml") || die "Cannot create output file";
+include("prog-head.sgml");
process("");
-html_footer(*OUT{IO});
-print OUT "</UL>\n";
+include("prog-foot.sgml");
close OUT;
exit 0;
+sub include {
+ my $f = shift @_;
+ open(IN, "$srcdir/doc/$f") || die "Unable to find $f";
+ while (<IN>) {
+ print OUT;
+ }
+ close IN;
+}
+
sub process {
my $dir = shift @_;
print "$dir/Doc\n";
open(IN, "$srcdir/$dir/Doc") || die "Unable to read $dir/Doc";
my @docfile = <IN>;
- my @stack = ();
close IN;
- push @docfile, "X\n";
foreach $_ (@docfile) {
chomp;
/^#/ && next;
- /^(\.*)([A-Z]+)\s*(.*)/ || die "Parse error: $_";
- $indent = length $1;
- $cmd = $2;
- $arg = $3;
- while (@stack > $indent) {
- $x = pop @stack;
- if ($x eq "H") { print OUT "</UL>\n"; }
- elsif ($x eq "F") { html_footer(*AUX{IO}); close AUX; }
- else { print STDERR "Unknown stack element $x\n"; }
- }
- (@stack == $indent) or die "Invalid nesting: $_";
+ /^([A-Z]+)\s*(.*)/ || die "Parse error: $_";
+ $cmd = $1;
+ $arg = $2;
if ($cmd eq "C") { process("$dir/$arg"); }
elsif ($cmd eq "H") {
push @stack, "H";
- print OUT "<LI>$arg";
- print OUT "<UL>\n";
- } elsif ($cmd eq "F") {
- $arg =~ /^(\S+)\s+(.*)$/ || die "Invalid command: $_";
- push @stack, "F";
- print " $1\n";
- open(AUX, ">prog/$1.html") || die "Unable to create output file";
- print OUT "<LI><A HREF=\"$1.html\">$2</A>\n";
- html_header(*AUX{IO}, "BIRD: $2");
+ print OUT "<sect>$arg\n";
} elsif ($cmd eq "S") {
print " $arg\n";
- open(DOC, "cd $srcdir/$dir ; $srcdir/doc/kernel-doc -html $arg |") || die "Unable to start kernel-doc";
- while (<DOC>) { print AUX; }
+ open(DOC, "cd $srcdir/$dir ; $srcdir/doc/kernel-doc -bird $arg |") || die "Unable to start kernel-doc";
+ while (<DOC>) { print OUT; }
close DOC;
- } elsif ($cmd eq "X") {
+ } elsif ($cmd eq "D") {
+ print " $arg\n";
+ include($arg);
} else { die "Unknown command: $cmd"; }
}
}
-
-sub html_header {
- my $out = shift @_;
- my $title = shift @_;
- print $out <<EOF
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML><HEAD><TITLE>$title</TITLE>
-<LINK REV=MADE HREF="mailto:bird\@atrey.karlin.mff.cuni.cz">
-</HEAD><BODY>
-EOF
-;
-}
-
-sub html_footer {
- my $out = shift @_;
- print $out <<EOF
-</BODY></HTML>
-EOF
-;
-}