From 9b541f8123bf347103e3c480ee21433d2f9cc1c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Wed, 16 Sep 2020 00:03:55 +0200 Subject: [PATCH] Render symlinks as hyperlinks --- gitsrht/blueprints/repo.py | 9 +++++++-- gitsrht/templates/blame.html | 2 +- gitsrht/templates/blob.html | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gitsrht/blueprints/repo.py b/gitsrht/blueprints/repo.py index b5afb7d..c1c5013 100644 --- a/gitsrht/blueprints/repo.py +++ b/gitsrht/blueprints/repo.py @@ -15,6 +15,7 @@ from gitsrht.rss import generate_feed from gitsrht.types import Artifact from io import BytesIO from jinja2 import Markup +from jinja2.utils import url_quote, escape from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import guess_lexer, guess_lexer_for_filename, TextLexer @@ -53,10 +54,14 @@ def get_readme(repo, git_repo, tip, link_prefix=None): return get_formatted_readme("git.sr.ht:git", file_finder, content_getter, link_prefix=link_prefix) -def _highlight_file(repo, ref, name, data, blob_id, commit_id): +def _highlight_file(repo, ref, entry, data, blob_id, commit_id): link_prefix = url_for('repo.tree', owner=repo.owner, repo=repo.name, ref=ref) - return get_highlighted_file("git.sr.ht:git", name, blob_id, data) + if entry.filemode == pygit2.GIT_FILEMODE_LINK: + return Markup(f"" + + f"{escape(data)}") + else: + return get_highlighted_file("git.sr.ht:git", entry.name, blob_id, data) def render_empty_repo(owner, repo): origin = cfg("git.sr.ht", "origin") diff --git a/gitsrht/templates/blame.html b/gitsrht/templates/blame.html index c091c22..295902e 100755 --- a/gitsrht/templates/blame.html +++ b/gitsrht/templates/blame.html @@ -82,7 +82,7 @@ pre, body { id="L{{loop.index}}" >{{loop.index}} {% endfor %} - {{ highlight_file(repo, ref, entry.name, + {{ highlight_file(repo, ref, entry, data, blob.id.hex, commit.id.hex) }} diff --git a/gitsrht/templates/blob.html b/gitsrht/templates/blob.html index 45e6821..60e6215 100644 --- a/gitsrht/templates/blob.html +++ b/gitsrht/templates/blob.html @@ -86,7 +86,7 @@ pre, body { id="L{{loop.index}}" >{{loop.index}}{% if not loop.last %} {% endif %}{% endfor %} - {{ highlight_file(repo, ref, entry.name, + {{ highlight_file(repo, ref, entry, data, blob.id.hex, commit.id.hex) }} {% else %} -- 2.38.4