Not correctly resetting $item and $value after an expansion error inside
[exim.git] / doc / doc-docbook / TidyHTML-spec
index c1bc994cd2ac3be1f55b875e16e3ed69801692e0..4e7b8a2cab43a4a4cb619acf216501b357f19975 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl
 
 #! /usr/bin/perl
 
-# $Cambridge: exim/doc/doc-docbook/TidyHTML-spec,v 1.3 2006/02/01 11:01:01 ph10 Exp $
+# $Cambridge: exim/doc/doc-docbook/TidyHTML-spec,v 1.4 2006/04/04 14:03:49 ph10 Exp $
 
 # Script to tidy up the spec HTML files that are generated by xmlto. The
 # following changes are made:
 
 # Script to tidy up the spec HTML files that are generated by xmlto. The
 # following changes are made:
@@ -15,7 +15,7 @@
 # 6. Before each occurrence of </td> insert &nbsp; so that the table's cell
 #    is a little bit wider than the text itself.
 
 # 6. Before each occurrence of </td> insert &nbsp; so that the table's cell
 #    is a little bit wider than the text itself.
 
-chdir "spec.html";
+chdir "spec_html";
 
 $tocref = 1;
 
 
 $tocref = 1;
 
@@ -25,11 +25,23 @@ open(IN, "index.html") || die "Failed to open index.html for reading: $!\n";
 @toc = <IN>;
 close(IN);
 
 @toc = <IN>;
 close(IN);
 
-# Insert a newline after every > because the whole toc is generated as one
-# humungous line that is hard to check. Then split the lines so that each one
-# is a separate element in the vector.
+# Insert a newline after every > except when it is preceded by 'class="quote"',
+# because the whole toc is generated as one humungous line that is hard to
+# check. We have to avoid it in the quote case because that puts a space into
+# the output, and similarly for the </span> the comes afterwards. Easy way out
+# is just not to do it for all </span> occurrences. Unfortunately, Perl does
+# not implement lookbehinds where the alternatives are of different lengths, so
+# we have to take two passes.
+
+
+foreach $line (@toc)
+  {
+  $line =~ s/(?<!class="quote")>\s*/>\n/g;
+  $line =~ s/<\/span>\n/<\/span>/g;
+  }
+
+# Split the lines so that each one is a separate element in the vector.
 
 
-foreach $line (@toc) { $line =~ s/>\s*/>\n/g; }
 for ($i = 0; $i < scalar(@toc); $i++)
   { splice @toc, $i, 1, (split /(?<=\n)/, $toc[$i]); }
 
 for ($i = 0; $i < scalar(@toc); $i++)
   { splice @toc, $i, 1, (split /(?<=\n)/, $toc[$i]); }