diff options
-rwxr-xr-x | git-arr | 1 | ||||
-rw-r--r-- | utils.py | 3 | ||||
-rw-r--r-- | views/blob.html | 8 |
3 files changed, 12 insertions, 0 deletions
@@ -187,6 +187,7 @@ def with_utils(f): 'markdown_blob': utils.markdown_blob, 'can_embed_image': utils.can_embed_image, 'embed_image_blob': utils.embed_image_blob, + 'is_binary': utils.is_binary, 'abort': bottle.abort, 'smstr': git.smstr, } @@ -103,3 +103,6 @@ def embed_image_blob(fname, image_data): return '<img style="max-width:100%;" src="data:{0};base64,{1}" />'.format( \ mimetype, base64.b64encode(image_data)) +def is_binary(s): + # Git considers a blob binary if NUL in first ~8KB, so do the same. + return '\0' in s[:8192] diff --git a/views/blob.html b/views/blob.html index 1849260..4526c99 100644 --- a/views/blob.html +++ b/views/blob.html @@ -41,6 +41,14 @@ % if can_embed_image(repo, fname.unicode): {{!embed_image_blob(fname.raw, blob.raw_content)}} +% elif is_binary(blob.raw_content): +<table class="nice"> + <tr> + <td> + binary — {{'{:,}'.format(len(blob.raw_content))}} bytes + </td> + </tr> +</table> % elif can_markdown(repo, fname.unicode): {{!markdown_blob(blob.utf8_content)}} % elif can_colorize(blob.utf8_content): |