[Reproducible-commits] [diffoscope] 01/01: Make table loading links fail gracefully

Joachim Breitner nomeata at moszumanska.debian.org
Wed Dec 2 17:15:41 UTC 2015


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

nomeata pushed a commit to branch html-dir
in repository diffoscope.

commit 5d2057cdd8421c19afd9c7795679132bdd838735
Author: Joachim Breitner <mail at joachim-breitner.de>
Date:   Wed Dec 2 18:14:33 2015 +0100

    Make table loading links fail gracefully
    
    by wrapping them in a proper header (requires threading through css_url
    :-() and by using jQuery’s load function, which is capable of extracting
    a fragment (here: "table") from the loaded file.
---
 diffoscope/presenters/html.py | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/diffoscope/presenters/html.py b/diffoscope/presenters/html.py
index d6c0d39..00a1129 100644
--- a/diffoscope/presenters/html.py
+++ b/diffoscope/presenters/html.py
@@ -60,8 +60,8 @@ DIFFOFF = "\x02"
 HEADER = """<!DOCTYPE html>
 <html>
 <head>
-  <meta charset="utf-8">
-  <meta name="generator" content="diffoscope">
+  <meta charset="utf-8" />
+  <meta name="generator" content="diffoscope" />
   <link rel="icon" type="image/png" href="data:image/png;base64,%(favicon)s" />
   <title>%(title)s</title>
   <style>
@@ -166,10 +166,10 @@ $(function() {
     var filename = $(this).attr('href');
     var div = $(this).parent();
     div.text('... loading ...');
-    $.get(filename, function (data) {
-        console.log('data');
-        div.replaceWith(data);
-    }, 'html');
+    div.load(filename + " table", function() {
+        // http://stackoverflow.com/a/8452751/946226
+        $(this).children(':first').unwrap();
+    });
     return false;
   });
 });
@@ -489,13 +489,15 @@ def output_unified_diff_table(print_func, unified_diff):
     finally:
         print_func(u"</table>", force=True)
 
-def output_unified_diff(print_func, directory, unified_diff):
+def output_unified_diff(print_func, css_url, directory, unified_diff):
     if directory and len(unified_diff) > Config.general.separate_file_diff_size:
         # open a new file for this table
         filename="%s.html" % hashlib.md5(unified_diff.encode('utf-8')).hexdigest()
         logger.debug('separate html output for diff of size %d', len(unified_diff))
         with file_printer(directory, filename) as new_print_func:
+            output_header(css_url, new_print_func)
             output_unified_diff_table(new_print_func, unified_diff)
+            output_footer(new_print_func)
 
         print_func("<div class='ondemand'>\n")
         print_func("... <a href='%s'>load diff</a> ...\n" % escape(filename))
@@ -504,7 +506,7 @@ def output_unified_diff(print_func, directory, unified_diff):
     else:
         output_unified_diff_table(print_func, unified_diff)
 
-def output_difference(difference, print_func, directory, parents):
+def output_difference(difference, print_func, css_url, directory, parents):
     logger.debug('html output for %s', difference.source1)
     sources = parents + [difference.source1]
     print_func(u"<div class='difference'>")
@@ -526,9 +528,9 @@ def output_difference(difference, print_func, directory, parents):
                        % u'<br />'.join(map(escape, difference.comments)))
         print_func(u"</div>")
         if difference.unified_diff:
-            output_unified_diff(print_func, directory, difference.unified_diff)
+            output_unified_diff(print_func, css_url, directory, difference.unified_diff)
         for detail in difference.details:
-            output_difference(detail, print_func, directory, sources)
+            output_difference(detail, print_func, css_url, directory, sources)
     except PrintLimitReached:
         logger.debug('print limit reached')
         raise
@@ -546,6 +548,10 @@ def output_header(css_url, print_func):
                          'css_link': css_link,
                         })
 
+def output_footer(print_func):
+    print_func(FOOTER % {'version': VERSION}, force=True)
+
+
 def output_html(difference, css_url=None, print_func=None):
     """
     Default presenter, all in one HTML file
@@ -555,12 +561,12 @@ def output_html(difference, css_url=None, print_func=None):
     print_func = create_limited_print_func(print_func, Config.general.max_report_size)
     try:
         output_header(css_url, print_func)
-        output_difference(difference, print_func, None, [])
+        output_difference(difference, print_func, css_url, None, [])
     except PrintLimitReached:
         logger.debug('print limit reached')
         print_func(u"<div class='error'>Max output size reached.</div>",
                    force=True)
-    print_func(FOOTER % {'version': VERSION}, force=True)
+    output_footer(print_func)
 
 @contextmanager
 def file_printer(directory, filename):
@@ -591,10 +597,10 @@ def output_html_directory(directory, difference, css_url=None, jquery_url=None):
         print_func = create_limited_print_func(print_func, Config.general.max_report_size)
         try:
             output_header(css_url, print_func)
-            output_difference(difference, print_func, directory, [])
+            output_difference(difference, print_func, css_url, directory, [])
         except PrintLimitReached:
             logger.debug('print limit reached')
             print_func(u"<div class='error'>Max output size reached.</div>",
                        force=True)
         print_func(SCRIPTS % {'jquery_url': escape(jquery_url)}, force=True)
-        print_func(FOOTER % {'version': VERSION}, force=True)
+        output_footer(print_func)

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



More information about the Reproducible-commits mailing list