[Reproducible-commits] [debbindiff] 05/08: Add anchors in HTML output

Jérémy Bobbio lunar at moszumanska.debian.org
Fri Mar 20 11:31:42 UTC 2015


This is an automated email from the git hooks/post-receive script.

lunar pushed a commit to branch master
in repository debbindiff.

commit a6fada680761646e19183bc07cd8c007c0ad84eb
Author: Jérémy Bobbio <lunar at debian.org>
Date:   Fri Mar 20 12:13:35 2015 +0100

    Add anchors in HTML output
    
    Closes: #778537
---
 debbindiff/presenters/html.py | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/debbindiff/presenters/html.py b/debbindiff/presenters/html.py
index b2580ed..b687f9e 100644
--- a/debbindiff/presenters/html.py
+++ b/debbindiff/presenters/html.py
@@ -91,6 +91,16 @@ HEADER = """
       background-color: #ff4444;
       font-weight: bold;
     }
+    .anchor {
+      margin-left: 0.5em;
+      font-size: 80%%;
+      color: #333;
+      text-decoration: none;
+      display: none;
+    }
+    .diffheader:hover .anchor {
+      display: inline;
+    }
   </style>
   %(css_link)s
 </head>
@@ -216,26 +226,32 @@ def create_diff(lines1, lines2):
         return output
 
 
-def output_difference(difference, print_func):
+def output_difference(difference, print_func, parents):
     logger.debug('html output for %s', difference.source1)
+    sources = parents + [difference.source1]
     print_func("<div class='difference'>")
     try:
+        print_func("<div class='diffheader'>")
         if difference.source1 == difference.source2:
-            print_func("<div><span class='source'>%s<span></div>"
+            print_func("<div><span class='source'>%s<span>"
                        % escape(difference.source1))
         else:
             print_func("<div><span class='source'>%s</span> vs.</div>"
                        % escape(difference.source1))
-            print_func("<div><span class='source'>%s</span></div>"
+            print_func("<div><span class='source'>%s</span>"
                        % escape(difference.source2))
+        anchor = '/'.join(sources[1:])
+        print_func(" <a class='anchor' href='#%s' name='%s'>¶</a>" % (anchor, anchor))
+        print_func("</div>")
         if difference.comment:
             print_func("<div class='comment'>%s</div>"
                        % escape(difference.comment).replace('\n', '<br />'))
+        print_func("</div>")
         if difference.lines1 or difference.lines2:
             print_func(create_diff(difference.lines1 or ['<empty>'],
                                    difference.lines2 or ['<empty>']))
         for detail in difference.details:
-            output_difference(detail, print_func)
+            output_difference(detail, print_func, sources)
     except PrintLimitReached:
         logger.debug('print limit reached')
         raise
@@ -262,7 +278,7 @@ def output_html(differences, css_url=None, print_func=None, max_page_size=None):
     try:
         output_header(css_url, print_func)
         for difference in differences:
-            output_difference(difference, print_func)
+            output_difference(difference, print_func, [])
     except PrintLimitReached:
         logger.debug('print limit reached')
         print_func("<div class='error'>Max output size reached.</div>",

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/debbindiff.git



More information about the Reproducible-commits mailing list