added frontmatter date parsing

This commit is contained in:
Daniel Fichtinger 2025-07-03 12:25:09 -04:00
parent e890134abf
commit b26cfc2784
3 changed files with 33 additions and 1 deletions

View file

@ -1,7 +1,7 @@
from dataclasses import dataclass
from rich import print
from pathlib import Path
from datetime import date
from dateutil import parser as date_parser
from dacite.config import Config
from dacite.core import from_dict
@ -23,6 +23,13 @@ class Metadata:
post: bool | None = None
def parse_date(raw_date: str | date | object) -> date:
if isinstance(raw_date, date):
return raw_date
assert isinstance(raw_date, str)
return date_parser.parse(raw_date).date()
def parse_metadata(path: Path) -> tuple[Metadata, str]:
"""
Parses a file and returns parsed Metadata and its content. Defaults
@ -42,6 +49,7 @@ def parse_metadata(path: Path) -> tuple[Metadata, str]:
"date": date.fromtimestamp(path.stat().st_ctime),
}
meta = {**defaults, **raw_meta}
meta["date"] = parse_date(meta.get("date"))
try:
metadata = from_dict(
data_class=Metadata,