8 Commits

5 changed files with 51 additions and 15 deletions

View File

@@ -104,6 +104,12 @@ mjx-container {
p.metadata { margin: 0 } p.metadata { margin: 0 }
.blog_inline_post {
border-left: 1em solid var(--fg-lc);
padding: 0 1em 0 1em;
margin-bottom: 5em;
}
@media (max-width: 80em) { @media (max-width: 80em) {
/* CSS that should be displayed if width is equal to or less than 60em goes here */ /* CSS that should be displayed if width is equal to or less than 60em goes here */
#contentWrapper { flex-direction: column } #contentWrapper { flex-direction: column }

View File

@@ -14,6 +14,7 @@ import time
import magic import magic
import regex as re import regex as re
import pprint import pprint
from datetime import datetime as dt
import frontmatter import frontmatter
import jinja2 import jinja2
@@ -59,7 +60,6 @@ class FileMap:
def get_base_url(self): def get_base_url(self):
props = self.get(self.input_dir.joinpath('readme.md')) props = self.get(self.input_dir.joinpath('readme.md'))
print(props)
return props['base_url'] return props['base_url']
@staticmethod @staticmethod
@@ -246,6 +246,15 @@ class FileMap:
return d return d
def rfc822_date_sorter_key(date):
if date is None:
ret = 0
else:
ret = int(dt.strptime(date, '%a, %d %b %Y %H:%M:%S %z').timestamp())
return ret
def update_required(src_filepath, output_filepath): def update_required(src_filepath, output_filepath):
""" """
check if file requires an update, check if file requires an update,
@@ -531,6 +540,22 @@ def main(args):
} }
posts.append(post) posts.append(post)
posts.sort(
key=lambda p: rfc822_date_sorter_key(p.get('pub_date')),
reverse=True
)
# render rss feed
rss = JINJA_TEMPLATE_BLOG_FEED.render(
title=root_properties.get('title', ''),
description=root_properties.get('content', ''),
base_url=FILEMAP.get_base_url(),
link=f"{FILEMAP.get_base_url()}{root_properties['dst_path']['web']}",
language='en-GB',
posts=posts,
)
root_properties['dst_path']['raw'].joinpath('feed.xml').write_text(rss)
#pprint.pprint(root_properties) #pprint.pprint(root_properties)
# render index # render index
html = (JINJA_TEMPLATE_BLOGINDEX if root_properties['blog'] else JINJA_TEMPLATE_INDEX).render( html = (JINJA_TEMPLATE_BLOGINDEX if root_properties['blog'] else JINJA_TEMPLATE_INDEX).render(
@@ -549,18 +574,6 @@ def main(args):
) )
root_properties['dst_path']['raw'].joinpath('index.html').write_text(html) root_properties['dst_path']['raw'].joinpath('index.html').write_text(html)
# render rss feed if blog
if root_properties['blog']:
rss = JINJA_TEMPLATE_BLOG_FEED.render(
title=root_properties.get('title', ''),
description=root_properties.get('content', ''),
base_url=FILEMAP.get_base_url(),
link=f"{FILEMAP.get_base_url()}{root_properties['dst_path']['web']}",
language='en-GB',
posts=posts,
)
root_properties['dst_path']['raw'].joinpath('feed.xml').write_text(rss)
# render each file # render each file
for file in files: for file in files:
render_file(root.joinpath(file)) render_file(root.joinpath(file))

View File

@@ -74,7 +74,7 @@ gronk reads the following YAML [frontmatter](https://jekyllrb.com/docs/front-mat
| variable | description | | variable | description |
|------------------|---------------------------------------------------------------------------------------| |------------------|---------------------------------------------------------------------------------------|
| `author` | The person(s) who wrote the article | | `author` | The person(s) who wrote the article |
| `pub_date` | set the publish date of an article/post/note | | `pub_date` | (for blog mode) set the publish date of an article/post/note (MUST be RFC822 format) |
| `tags` | A YAML list of tags which the article relates to - this is used for browsing and also | | `tags` | A YAML list of tags which the article relates to - this is used for browsing and also |
| `title` | The title of the article | | `title` | The title of the article |
| `uuid` | A unique identifier used for permalinks. | | `uuid` | A unique identifier used for permalinks. |
@@ -88,6 +88,16 @@ This can be done by setting the `blog` variable to `true` in the `readme.md` [cu
Notes under this directory will be published to a blog, whose feed is accesible at `https://notes.alv.cx/notes/<directory..>/feed.xml`. Notes under this directory will be published to a blog, whose feed is accesible at `https://notes.alv.cx/notes/<directory..>/feed.xml`.
When blog mode is enabled, it is required that the `base_url` property is set in the top level `readme.md` file.
Note that there should be no trailing slash.
If a `readme.md` file does not exist, then an empty one can be created:
```md
---
base_url: https://notes.alv.cx
---
```
## Permalinks ## Permalinks

View File

@@ -31,7 +31,10 @@
<pre>{{ license }}</pre> <pre>{{ license }}</pre>
</details> </details>
{% endif %} {% endif %}
{% if not content %}
<h1>{{ title }}</h1> <h1>{{ title }}</h1>
{% endif %}
{% if not content_after_search %} {% if not content_after_search %}
{{ content|safe }} {{ content|safe }}
@@ -44,7 +47,7 @@
{% if automatic_index %} {% if automatic_index %}
<details> <details>
<summary> <summary>
<h2> List of posts </h2> <h4> List of posts </h4>
</summary> </summary>
{% if search_bar %} {% if search_bar %}
<div id="searchWrapper"> <div id="searchWrapper">
@@ -68,7 +71,9 @@
{{ content|safe }} {{ content|safe }}
{% for post in posts %} {% for post in posts %}
<div class="blog_inline_post">
{{ post['description']|safe }} {{ post['description']|safe }}
</div>
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@@ -1,6 +1,8 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block content %} {% block content %}
{% if not content %}
<h1>{{ title }}</h1> <h1>{{ title }}</h1>
{% endif %}
{% if not content_after_search %} {% if not content_after_search %}
{{ content|safe }} {{ content|safe }}