39 lines
945 B
Python
39 lines
945 B
Python
from pathlib import Path
|
|
from typing import Any, Generic, Iterator, TypeVar
|
|
|
|
TData = TypeVar("TData")
|
|
|
|
|
|
class Content(Generic[TData]):
|
|
def __init__(self, path: Path, data: TData, language: str | None = None) -> None:
|
|
self.__path = path
|
|
self.__data = data
|
|
self.__language = language
|
|
|
|
@property
|
|
def path(self) -> Path:
|
|
return self.__path
|
|
|
|
@property
|
|
def language(self) -> str | None:
|
|
return self.__language
|
|
|
|
@property
|
|
def data(self) -> TData:
|
|
return self.__data
|
|
|
|
def __str__(self) -> str:
|
|
return str(self.__data)
|
|
|
|
|
|
class ContentField(Content[Any]):
|
|
def __getitem__(self, key: Any) -> Any:
|
|
return ContentField(self.path, self.data.get(key), self.language)
|
|
|
|
def __iter__(self) -> Iterator[Any]:
|
|
for it in self.data:
|
|
yield ContentField(self.path, it, self.language)
|
|
|
|
def __str__(self) -> str:
|
|
return str(self.data)
|