aboutsummaryrefslogtreecommitdiff
path: root/utils.py
Commit message (Collapse)AuthorAgeFilesLines
* markdown: Handle local linksAlberto Bertogli2018-03-041-0/+41
| | | | | | | | | | | | | | By default, the markdown generator creates links for local files transparently. For example, "[text](link.md)" will generate "<a href=link.md>text</a>". This works fine for absolute and external links, but breaks for links relative to the repository itself, as git-arr links are of the form "dir/f=file.ext.html". So this patch adds a markdown extension to rewrite the links. It uses a heuristic to detect them, which should work for the vast majority of common cases.
* markdown: Enable table and fenced code extensionsAlberto Bertogli2016-11-031-1/+5
| | | | | | | This patch enables the table and fenced code extensions in markdown processing. Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* blob: render hexdump(1)-style binary blob contentEric Sunshine2015-01-131-0/+12
| | | | | | | | | | | | | | Raw binary blob content tends to look like "line noise" and is rarely, if ever, meaningful. A hexdump(1)-style rendering (specifically, "hexdump -C"), on the other hand, showing runs of hexadecimal byte values along with an ASCII representation of those bytes can sometimes reveal useful information about the data. (A subsequent patch will add the ability to cap the amount of data rendered in order to reduce storage space requirements.) Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* blob: render binary blob summary information rather than raw contentEric Sunshine2015-01-131-0/+3
| | | | | | | | | | | | | | | | | Binary blobs are currently rendered as raw data directly into the HTML output, looking much like "line noise". This is rarely, if ever, meaningful, and consumes considerable storage space since the entire raw blob content is embedded in the generated HTML file. Address this issue by instead emitting summary information about the blob, such as its classification ("binary") and its size. Other information can be added as needed. As in Git itself, a blob is considered binary if a NUL is present in the first ~8KB. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* embed_image_blob: retire reload of image blobEric Sunshine2015-01-131-8/+2
| | | | | | | | | | | | Historically, the 'blob' view was unconditionally handed cooked (utf8-encoded) blob content, so embed_image_blob(), which requires raw blob content, has been forced to reload the blob in raw form, which is ugly and expensive. However, now that the Blob returned by Repo.blob() is able to vend raw or cooked content, it is no longer necessary for embed_image_blob() to reload the blob to gain access to the raw content. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* Blob: vend raw or cooked contentEric Sunshine2015-01-131-2/+2
| | | | | | | | | | | | | | Some blob representations require raw blob content, however, the 'blob' view is unconditionally handed cooked (utf8-encoded) content, thus representations which need raw content are forced to reload the blob in raw form, which is ugly and expensive. The ultimate goal is to eliminate the wasteful blob reloading when raw content is needed. Toward that end, teach Blob how to vend raw or cooked content. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* git.py: introduce Blob abstractionEric Sunshine2015-01-131-1/+1
| | | | | | | | | | | | | | | | | | Some blob representations (such as embedded images) require raw blob content, however, the 'blob' view is unconditionally handed cooked (utf8-encoded) content, thus representations which need raw content are forced to reload the blob in raw form, which is ugly and expensive (due to shelling out to git-cat-file a second time). The ultimate goal is to eliminate the wasteful blob reloading when raw content is needed. As a first step, introduce a Blob abstraction to be returned by Repo.blob() rather than the cooked content. A subsequent change will flesh out Blob, allowing it to return raw or cooked content on demand without the client having to specify one or the other when invoking Repo.blob(). Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* Enable line number anchors when using pygments HtmlFormatterVanya Sergeev2014-07-031-1/+3
| | | | Signed-off-by: Vanya Sergeev <vsergeev@gmail.com>
* Make embedding markdown and images configurable per-repoAlberto Bertogli2013-11-021-6/+9
| | | | | | | | This patch introduces the embed_markdown and embed_images configuration options, so users can enable and disable those features on a per-repository basis. Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* utils: Make the embedded image code use mimetypesAlberto Bertogli2013-11-021-10/+4
| | | | | | | | This patch makes minor changes to the code that handles embedded images, mostly to make it use mimetypes, and to remove SVG support (at least for now) due to security concerns. Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* Add embed data URI image blob supportVanya Sergeev2013-11-021-0/+28
|
* Add markdown blob supportVanya Sergeev2013-11-021-0/+14
|
* Only guess the lexer if the file starts with "#!"Alberto Bertogli2012-11-271-4/+9
| | | | | | | | The lexer guesser based on content is often wrong; to minimize the chances of that happening, we only use it on files that start with "#!", for which it usually has smarter rules. Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* Fall back to guess the lexer by contentAlberto Bertogli2012-11-181-2/+6
| | | | | | | | | If we can't guess the lexer by the file name, try to guess based on the content. This allows pygments to colorize extension-less files, usually scripts. Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* Use heuristics to decide what to colorizeAlberto Bertogli2012-11-181-2/+22
| | | | | | | In practise pygments seems to have a very hard time processing large files and files with long lines, so try to avoid using it in those cases. Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
* Initial commit0.01Alberto Bertogli2012-11-101-0/+41
Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>