feat: return Markdown metadata items as DataItem
This commit is contained in:
parent
051a51280f
commit
8a614fee99
|
|
@ -50,22 +50,22 @@ class ContentDirectory(Content):
|
||||||
|
|
||||||
|
|
||||||
class DataField:
|
class DataField:
|
||||||
def __init__(self, file: "DataFile", value: Any) -> None:
|
def __init__(self, file_path: Path, value: Any) -> None:
|
||||||
self.__file = file
|
self.__file_path = file_path
|
||||||
self.__value = value
|
self.__value = value
|
||||||
|
|
||||||
def as_path(self) -> Path:
|
def as_path(self) -> Path:
|
||||||
return self.__file.path.parent / str(self.__value)
|
return self.__file_path.parent / str(self.__value)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return str(self.__value)
|
return str(self.__value)
|
||||||
|
|
||||||
def __getitem__(self, key: Any) -> Any:
|
def __getitem__(self, key: Any) -> Any:
|
||||||
return DataField(self.__file, self.__value.get(key))
|
return DataField(self.__file_path, self.__value.get(key))
|
||||||
|
|
||||||
def __iter__(self) -> Iterator[Any]:
|
def __iter__(self) -> Iterator[Any]:
|
||||||
for it in self.__value:
|
for it in self.__value:
|
||||||
yield DataField(self.__file, it)
|
yield DataField(self.__file_path, it)
|
||||||
|
|
||||||
|
|
||||||
class DataFile(Content):
|
class DataFile(Content):
|
||||||
|
|
@ -75,11 +75,11 @@ class DataFile(Content):
|
||||||
self.__data = load(data_file, Loader)
|
self.__data = load(data_file, Loader)
|
||||||
|
|
||||||
def __getitem__(self, key: Any) -> Any:
|
def __getitem__(self, key: Any) -> Any:
|
||||||
return DataField(self, self.__data.get(key))
|
return DataField(self.path, self.__data.get(key))
|
||||||
|
|
||||||
def __iter__(self) -> Iterator[Any]:
|
def __iter__(self) -> Iterator[Any]:
|
||||||
for it in self.__data:
|
for it in self.__data:
|
||||||
yield DataField(self, it)
|
yield DataField(self.path, it)
|
||||||
|
|
||||||
|
|
||||||
class MarkdownFile(Content):
|
class MarkdownFile(Content):
|
||||||
|
|
@ -95,4 +95,4 @@ class MarkdownFile(Content):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def meta(self) -> Any:
|
def meta(self) -> Any:
|
||||||
return self.__markdown.Meta # type: ignore
|
return DataField(self.path, self.__markdown.Meta) # type: ignore
|
||||||
|
|
|
||||||
|
|
@ -44,4 +44,4 @@ def test_load_markdown(datadir: Path) -> None:
|
||||||
page = content.load(Path("page.md"))
|
page = content.load(Path("page.md"))
|
||||||
|
|
||||||
assert page.html == "<p>Content</p>"
|
assert page.html == "<p>Content</p>"
|
||||||
assert page.meta["title"] == "Title"
|
assert str(page.meta["title"]) == "Title"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue