added frontmatter date parsing
This commit is contained in:
parent
e890134abf
commit
b26cfc2784
3 changed files with 33 additions and 1 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue