summaryrefslogtreecommitdiffstats
path: root/g2h
diff options
context:
space:
mode:
Diffstat (limited to 'g2h')
-rw-r--r--g2h/file.py11
-rw-r--r--g2h/file_page.py3
-rw-r--r--g2h/tree_page.py3
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.