diff options
| author | Christoph Schlosser <christoph@linux.com> | 2025-09-18 22:05:48 +0200 |
|---|---|---|
| committer | Christoph Schlosser <christoph@linux.com> | 2025-09-18 22:05:48 +0200 |
| commit | 74cd345f76dd01034c804f75e7f16b42e9c0643c (patch) | |
| tree | b1105460df469168e052ec278bbb9b96a829ca33 /g2h | |
| parent | f2056d0a59cd7234610dd7da1ea2c3e2a4be0f00 (diff) | |
| download | git2hugo-74cd345f76dd01034c804f75e7f16b42e9c0643c.tar.gz | |
g2h: Add breadcrumb navigations to file and tree pages
Diffstat (limited to 'g2h')
| -rw-r--r-- | g2h/file.py | 11 | ||||
| -rw-r--r-- | g2h/file_page.py | 3 | ||||
| -rw-r--r-- | g2h/tree_page.py | 3 |
3 files changed, 15 insertions, 2 deletions
diff --git a/g2h/file.py b/g2h/file.py index 8f683cd..e07f251 100644 --- a/g2h/file.py +++ b/g2h/file.py @@ -1,5 +1,16 @@ import os +def generate_breadcrumbs(content_subdir, commit, dir, files): + breadcrumbs = '[/](/{})'.format(os.path.join(content_subdir, tree_join(commit, ''))) + subpath = '' + for segment in dir.split(os.sep): + if not segment or len(segment) == 0: + continue + subpath = os.path.join(subpath, sanitize_file_name(segment, files)) + breadcrumbs += '/[{}](/{})'.format(segment, os.path.join(content_subdir, tree_join(commit, subpath))) + return breadcrumbs + + def sanitize_file_name(file_name, files): if not file_name.startswith('.'): return file_name diff --git a/g2h/file_page.py b/g2h/file_page.py index b154ee5..67ddf6d 100644 --- a/g2h/file_page.py +++ b/g2h/file_page.py @@ -2,7 +2,7 @@ import base64 import filetype import os -from .file import sanitize_file_name, tree_join +from .file import generate_breadcrumbs, sanitize_file_name, tree_join from .page import Page from .tree import safe_join @@ -37,6 +37,7 @@ class FilePage(Page): content, file_type = bytes_to_content(file_bytes) return { + 'breadcrumbs': generate_breadcrumbs(self.content_subdir, self.commit, os.path.join(self.file_path, self.file_name), self.tree.blobs), 'content': content, 'content_subdir': self.content_subdir, 'file_extension': os.path.splitext(self.file_name)[1].lstrip('.'), diff --git a/g2h/tree_page.py b/g2h/tree_page.py index 9b7a0d5..c36212c 100644 --- a/g2h/tree_page.py +++ b/g2h/tree_page.py @@ -1,6 +1,6 @@ import os -from .file import sanitize_file_name, tree_join +from .file import generate_breadcrumbs, sanitize_file_name, tree_join from .page import Page from .tree import safe_join @@ -41,6 +41,7 @@ class TreePage(Page): def context(self): return { + 'breadcrumbs': generate_breadcrumbs(self.content_subdir, self.commit, self.sub_tree, self.tree.blobs), 'content_subdir': self.content_subdir, 'entries': self._get_entries(), # TODO: Make this fit the rest of the system. |