X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/495ae4b01f36d0d8bb0e34a1d7263c2b8224aa4a..e498ab40197936833f696439e78c5cb08e5180cb:/doc/doc-scripts/g2h diff --git a/doc/doc-scripts/g2h b/doc/doc-scripts/g2h index e940e669b..b6e292211 100755 --- a/doc/doc-scripts/g2h +++ b/doc/doc-scripts/g2h @@ -1,5 +1,4 @@ #! /usr/bin/perl -w -# $Cambridge: exim/doc/doc-scripts/g2h,v 1.1 2004/10/07 15:04:35 ph10 Exp $ # This is a script that turns the SGCAL source of Exim's documentation into # HTML. It can be used for both the filter document and the main Exim @@ -180,6 +179,7 @@ $key = "$text"; $key =~ s/<[^>]+>//g; $key =~ s/&#(\d+);/chr($1)/eg; $key =~ s/^`+//; +$key =~ s/^"//; # Turn all spaces in the text into   so that they don't ever split. # However, there may be spaces in the HTML that already exists in the @@ -654,20 +654,20 @@ elsif (/^\.display\b/) { print OUT "
\n"; } - + # Some displays have emphasis inside them - + elsif (/^\.em\b/) { print OUT "" if ! $inem; $inem = 1; - } + } elsif (/^\.nem\b/) { print OUT "" if $inem; $inem = 0; - } + } # There are occasional instances of .if [!]~~sys.fancy inside displays. # In both cases we want the non-fancy alternative. (The only thing that @@ -689,10 +689,10 @@ elsif (/^\.display\b/) # Ignore .newline and .linelength elsif (/^\.newline\b/ || /^\.linelength\b/) {} - + # Ignore comments - - elsif (/^\.(\s|$)/) {} + + elsif (/^\.(\s|$)/) {} # There shouldn't be any other directives inside displays @@ -755,7 +755,10 @@ elsif (/^\.display\b/) # Handle configuration option definitions -elsif (/^\.startconf\b/) {} +elsif (/^\.startconf\s+(.*)/) + { + $confuse = &handle_text($1); + } elsif (/^\.conf\b/) { @@ -781,6 +784,7 @@ elsif (/^\.conf\b/) &setpar(0); &handle_index($option, 0); print OUT "

$option

\n" . + "Use:  $confuse
" . "Type:  $type
Default:  $default
\n"; } @@ -831,7 +835,7 @@ elsif (/^\.startoptions\b/) {} elsif (/^\.option\s+(.*)/) { my($arg) = $1; - $arg =~ s/^"(.*)"$/$1/; + $arg =~ s/"([^"]*)"/$1/g; print OUT "
"; &setpar(0); @@ -881,7 +885,10 @@ open (IN, $source_file) || die "Can't open $source_file (first pass)\n"; $_ = ; # At the start of the specification text, there are some textual replacement -# definitions. They set values, but not cross-references. +# definitions. They set values, but not cross-references. They may be preceded +# by comments. + +$_ = while (/^\.(\s|$)/); while (/^\.r?set\s+(\S+)\s+"?([^"]+)\"?\s*$/) { @@ -979,7 +986,7 @@ open (IN, $source_file) || die "Can't open $source_file (2nd pass)\n"; $_ = ; # Skip on till we hit the start of the first chapter, but note if we -# pass ".set chapter -1", which is used to indicate no chapter numbering for +# pass ".set chapter -1", which is used to indicate no chapter numbering for # the first chapter (we number is 0). Keep track of whether we are in macro # definitions or not, and when not, notice occurrences of .index, because this # are the "x see y" type entries. @@ -1002,7 +1009,7 @@ while (!/^\.chapter/) } $_ = ; } - + # Open the TOC file open (TOC, ">$html/${file_base}_toc.html") || @@ -1021,7 +1028,7 @@ print TOC "

$doctitle


\n
    \n"; # Loop for handling chapters. At the start of this loop, $_ is either EOF, # or contains a .chapter line. -$firstchapter = $thischapter + 1; +$firstchapter = $thischapter + 1; while ($_) { @@ -1072,8 +1079,8 @@ while ($_) print TOC "
      \n" if !$insection; $insection = 1; - my($title) = (($thischapter > 0)? "$thischapter." : "") . - "$thissection. " . &handle_text($1, 0); + my($title) = (($thischapter > 0)? "$thischapter.$thissection " : + "$thissection. ") . &handle_text($1, 0); if ($sectsplit) { @@ -1119,7 +1126,7 @@ while ($_) print OUT "" if ! $inem; $inem = 1; # Used to handle it here - but that fails if it is .section. - # Just let the next iteration of the loop handle it. + # Just let the next iteration of the loop handle it. # &handle_directive(); } @@ -1300,7 +1307,7 @@ foreach $key (keys %$hash) { my($initial) = substr($key,0,1); $initial = "\U$initial"; - $indexindex{$initial} = 1 if $initial ge "A"; + $indexindex{$initial} = 1 if $initial ge "A" && $initial le "Z"; } print INDEX "

      \n"; @@ -1314,19 +1321,24 @@ my($letter) = ""; print INDEX "

      \n"; foreach $key (sort - { ("\L$a" eq "\L$b")? ("$a" cmp "$b") : ("\L$a" cmp "\L$b") } + { + my($aa) = $a; + my($bb) = $b; + + $aa =~ s/^\x93//; # Seems like the actual char values are + $bb =~ s/^\x93//; # set by this time, not "“" + + return ("\L$aa" eq "\L$bb")? ("$aa" cmp "$bb") : ("\L$aa" cmp "\L$bb"); + } keys %$hash) { my($initial) = substr($key,0,1); $initial = "\U$initial"; - if ($initial ne $letter) + if ($initial ne $letter && $initial ge "A" && $initial le "Z") { - if ($initial ge "A") - { - print INDEX "
      \n" if $letter ne ""; - print INDEX "\n"; - print INDEX "\U$initial\E
      \n"; - } + print INDEX "
      \n"; + print INDEX "\n"; + print INDEX "\U$initial\E
      \n"; $letter = $initial; } print INDEX "$$hash{$key}
      \n"; @@ -1367,6 +1379,7 @@ $html = "html"; $chapsplit = 0; $cindex_tocn = 0; +$confuse = ""; $file_base = ""; $index_count = 0; $inem = 0;