Source code for gnomish_army_knife.macro.group
"""
A module implementing an interface for macro groups.
"""
# built-in
from os import linesep
from pathlib import Path
# third-party
from vcorelib.io.types import JsonObject as _JsonObject
# internal
from gnomish_army_knife.icon import icon_url
from gnomish_army_knife.macro import Macro
from gnomish_army_knife.schemas import BasicGakCodec
[docs]
class MacroGroup(BasicGakCodec):
"""A class implementing an interface for macros."""
[docs]
def init(self, data: _JsonObject) -> None:
"""Perform implementation-specific initialization."""
super().init(data)
self.icon_url = icon_url(str(data["icon"]))
self.name: str = data["name"] # type: ignore
self.slug: str = self.to_slug(self.name)
self.macros: list[Macro] = [
# Schema has already been validated.
Macro(x, verify=False) # type: ignore
for x in data.get( # type: ignore
"macros",
[],
)
]
[docs]
def write_markdown(
self, parent_name: str, parent_icon_url: str, path: Path
) -> None:
"""Write markdown contents to disk."""
with path.open("w") as path_fd:
path_fd.write(
linesep.join(
[
f"# {self.icon_url} {self.name}",
"",
f"([{parent_icon_url}](index.html) "
f"[{parent_name}](index.html))",
"",
"## Macros",
"",
"TODO",
"",
]
+ list(self.markdown_footer)
)
)