roundabout,
created on Saturday, 30 March 2024, 14:13:38 (1711808018),
received on Wednesday, 31 July 2024, 06:54:43 (1722408883)
Author identity: vlad <vlad.muntoiu@gmail.com>
8f210de704ca70080de22b6917badcf90590df92
app.py
@@ -57,6 +57,7 @@ import jinja_utils
import celery_tasks
from celery import Celery, Task
import celery_integration
import pathlib
babel = Babel(app)
@@ -576,6 +577,7 @@ def repository_tree(username, repository, branch, subpath):
size=size,
icon=icon,
subpath=os.path.join("/", subpath),
extension=pathlib.Path(path).suffix,
basename=os.path.basename(path),
contents=contents,
remote=f"http{'s' if config.suggest_https else ''}://{config.BASE_DOMAIN}/git/{username}/{repository}",
jinja_utils.py
@@ -1,5 +1,7 @@
from app import app
from datetime import datetime
import markdown
from markupsafe import Markup
@app.template_filter("split")
@@ -20,3 +22,8 @@ def strftime(value: datetime):
@app.template_filter("decode")
def decode(value: bytes, codec: str = "UTF-8", errors: str = "strict"):
return value.decode(codec, errors)
@app.template_filter("markdown")
def decode(value: str):
return Markup(markdown.make_html(markdown.tokenise(value)))
templates/file-view.html
@@ -45,7 +45,24 @@
}
</style>
{% if mode == "text" %}
{% if (mode == "text" and extension == ".md") or mimetype == "text/markdown" %}
<x-notebook>
<label><input type="radio" name="tabs-example" checked>Rendered</label>
<x-tab>
<article>
{{ contents | markdown }}
</article>
</x-tab>
<label><input type="radio" name="tabs-example">Raw</label>
<x-tab>
<pre class="code-view" style="--line-chars: {{ contents | split('\n') | length | string | length }}">
{% for i in contents | split("\n") %}
<code>{{ i }}</code>
{% endfor %}
</pre>
</x-tab>
</x-notebook>
{% elif mode == "text" %}
<pre class="code-view" style="--line-chars: {{ contents | split('\n') | length | string | length }}">
{% for i in contents | split("\n") %}
<code>{{ i }}</code>