X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/cf451c90a160d8764b5e8ff6b0c1c10d038e59a1..78d746a3dbaeb6aafafad572d2627094e06b97bd:/scripts/macro-docs diff --git a/scripts/macro-docs b/scripts/macro-docs index 46b2a6e..265ee35 100755 --- a/scripts/macro-docs +++ b/scripts/macro-docs @@ -6,7 +6,7 @@ my $name; my $docs; while(defined($_ = <>)) { chomp; - if(!defined $name and m,^/\* (\@([a-z\-]+).*),) { + if(!defined $name and m,^/\*\$ (\@?([a-z\-]+).*),) { $name = $2; my $heading = $1; $docs = [$heading]; @@ -27,6 +27,7 @@ while(defined($_ = <>)) { } # Generate docs in name order +my $indented = 0; for my $m (sort keys %macros) { my @docs = @{$macros{$m}}; my $heading = shift @docs; @@ -40,12 +41,38 @@ for my $m (sort keys %macros) { print ".TP\n"; print ".B $heading\n"; for my $d (@docs) { + if($d =~ /^-\s*([^:]+):\s+(.*)/) { + if(!$indented) { + print ".RS\n"; + $indented = 1; + } + print ".TP 8\n"; + print ".B $1\n"; + $d = $2; + } + if($d =~ /^- /) { + $d = $'; + if(!$indented) { + print ".RS\n"; + $indented = 1; + } + print ".TP\n"; + print ".B .\n"; + } if($d eq '') { - print ".PP\n"; + if($indented) { + print ".RE\n"; + $indented = 0; + } + print ".IP\n"; } else { # Keep sentence-ending full stops at end of line $d =~ s/\. /\.\n/g; print "$d\n"; } } + if($indented) { + print ".RE\n"; + $indented = 0; + } }