From 036d5fb30ad7c0363495d63781ad473837870bb5 Mon Sep 17 00:00:00 2001 From: Hazel Noack Date: Thu, 22 May 2025 12:56:40 +0200 Subject: [PATCH] feat: started cleaning up context --- src/articles/index.toml | 2 +- stsg/__init__.py | 2 ++ stsg/build.py | 51 +++++++++++++++++++---------------------- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/articles/index.toml b/src/articles/index.toml index dd60ecc..726d3d1 100644 --- a/src/articles/index.toml +++ b/src/articles/index.toml @@ -1,2 +1,2 @@ name="stsg" -datetime="2024-04-15 13:45:12.123456" +iso_date="2024-04-15 13:45:12.123456" diff --git a/stsg/__init__.py b/stsg/__init__.py index 4b00972..e10f970 100644 --- a/stsg/__init__.py +++ b/stsg/__init__.py @@ -1,4 +1,6 @@ class config: + default_author = "anonymous" + class setup: source_directory = "src" dist_directory = "dist" diff --git a/stsg/build.py b/stsg/build.py index cbc995f..fd78a11 100644 --- a/stsg/build.py +++ b/stsg/build.py @@ -13,6 +13,7 @@ import jinja2 from functools import cached_property +from .definitions import * from . import config @@ -127,12 +128,6 @@ def compile_cross_article_context(cross_article_context): cross_article_context["link"] = f'{title}' -class ArticleTranslationContext(TypedDict): - slug: str - name: str - datetime: str - author: str - url: str class ArticleTranslation: @@ -239,20 +234,6 @@ class ArticleTranslation: f.write(TEMPLATE["article_translation"].render(self.context)) -class ArticleConfig(TypedDict): - slug: str - name: str - datetime: str - author: str - - -class ArticleContext(TypedDict): - slug: str - name: str - datetime: str - author: str - url: str - class Article: directory: Path @@ -327,15 +308,29 @@ class Article: logger.info("found %s at %s with the translations %s", self.slug, ".".join(list(self.slug_path)), ",".join(self.article_translations_map.keys())) + @cached_property + def modified_at(self) -> datetime: + if "iso_date" in self.config: + return datetime.fromisoformat(self.config["iso_date"]) + + """ + TODO + scann every article file and use the youngest article file + """ + + return datetime.fromtimestamp(self.directory.stat().st_mtime) + + @cached_property + def author(self) -> str: + return self.config.get("author", config.default_author) + def __init_context__(self): - self.context_shared["url"] = self.url - self.context_shared["slug"] = self.slug - - modified_at = datetime.fromisoformat(self.config["datetime"]) if "datetime" in self.config else datetime.fromtimestamp(self.directory.stat().st_mtime) - self.context_shared["date"] = modified_at.strftime(config.formatting.datetime_format) - self.context_shared["iso_date"] = modified_at.isoformat() - - self.context.update(self.context_shared) + self.context["slug"] = self.slug + self.context["name"] = self.name + self.context["url"] = self.url + self.context["date"] = self.modified_at.strftime(config.formatting.datetime_format) + self.context["iso_date"] = self.modified_at.isoformat() + self.context["author"] = self.author self.cross_article_context.update(self.context_shared) self.cross_article_context["title"] = self.context_shared["slug"]