[xen master] docs/parse-support-md: Unify identical [*] in footnotes

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[xen master] docs/parse-support-md: Unify identical [*] in footnotes

patchbot
commit 6bd34dc33a237df1af0b4bfec212b5c9e8705745
Author:     Ian Jackson <[hidden email]>
AuthorDate: Thu Apr 12 12:59:24 2018 +0100
Commit:     Ian Jackson <[hidden email]>
CommitDate: Thu Apr 12 17:12:12 2018 +0100

    docs/parse-support-md: Unify identical [*] in footnotes
   
    A section in the SUPPORT.md may mention multiple
       Status, something: Supported
    and then have some text.  The text is linked to from [*] footnotes
    in the table.  But, this means that each bit of text needs to
    apply to multiple rows.
   
    Before this commit this was a separate [*] after each applicable item.
    But multiple apparently-different links to the same thing are annoying
    for the reader.
   
    So, in this commit we combine them.  Formatting the result is not
    entirely trivial.
   
    Signed-off-by: Ian Jackson <[hidden email]>
    Release-acked-by: Juergen Gross <[hidden email]>
    ---
    v3: New patch
    v3.1: Drop `}' in multi-row [*] notes.  I put this in to help work
       around firefox bugs eg
         https://bugzilla.mozilla.org/show_bug.cgi?id=244135
       but I have been convinced it is not generally wanted.
   
    Signed-off-by: Ian Jackson <[hidden email]>
---
 docs/parse-support-md | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/docs/parse-support-md b/docs/parse-support-md
index 83768cf7ef..decda33fb6 100755
--- a/docs/parse-support-md
+++ b/docs/parse-support-md
@@ -17,6 +17,7 @@ use Tie::IxHash;
 use IO::File;
 use CGI qw(escapeHTML);
 use Data::Dumper;
+use POSIX;
 
 #---------- accumulating input/output ----------
 
@@ -285,9 +286,14 @@ sub count_rows_sectnode ($) {
     $rows++ if $sectnode->{Status};
     $rows += count_rows_sectlist $sectnode->{Children};
     $sectnode->{Rows} = $rows;
+    $sectnode->{RealSect}{Rows} = $rows;
     return $rows;
 }
 
+# Now we have
+#   $sectnode->{Rows}
+#   $sectnode->{RealSect}{Rows}
+
 sub count_rows_sectlist ($) {
     my ($sectlist) = @_;
     my $rows = 0;
@@ -349,22 +355,34 @@ sub write_output_row ($) {
     }
     for (my $i=0; $i<@version_urls; $i++) {
         my $st = $sectnode->{Status}[$i];
+
+        my $colspan = $sectnode->{RealSect}{ColSpan}[$i];
+        my $nextcell = '';
+        if (!defined $colspan) { # first row of this RealSect
+            $colspan= ' colspan="2"';
+            if ($sectnode->{RealSect}{HasText}[$i] && $st
+                && $sectnode->{RealSect}{Anchor}) {
+                my $rows = $sectnode->{RealSect}{Rows};
+                $nextcell = sprintf '<td rowspan=%d>', $rows;
+                $nextcell .= sprintf '<a href="%s#%s">[*]</a>',
+                    $version_urls[$i], $sectnode->{RealSect}{Anchor};
+                $nextcell .= '</td>';
+                $colspan = '';
+            }
+            $sectnode->{RealSect}{ColSpan}[$i] = $colspan;
+        }
+
         $st //= '-';
-        o('<td>');
+        o("<td$colspan>");
         my $end_a = '';
         if ($sectnode->{Key} eq 'release-support--xen-version') {
             o(sprintf '<a href="%s">', $version_urls[$i]);
             $end_a = '</a>';
         }
         o(escapeHTML($st));
-        if ($sectnode->{RealSect}{HasText}[$i]
-            && $sectnode->{Status}[$i]
-            && $sectnode->{RealSect}{Anchor}) {
-            o(sprintf '<a href="%s#%s">[*]</a>',
-              $version_urls[$i], $sectnode->{RealSect}{Anchor});
-        }
         o($end_a);
         o('</td>');
+        o($nextcell);
     }
     o("</tr>\n");
 }      
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
[hidden email]
https://lists.xenproject.org/xen-changelog