Source code for gnomish_army_knife.macro

"""
A module implementing macro interfaces.
"""

# built-in
from os import linesep

# third-party
from vcorelib.dict.codec import BasicDictCodec as _BasicDictCodec
from vcorelib.io.types import JsonObject as _JsonObject

# internal
from gnomish_army_knife.icon import icon_url
from gnomish_army_knife.schemas import GakDictCodec


[docs] class Macro(GakDictCodec, _BasicDictCodec): """A class implementing an interface for macros.""" short_markdown: str
[docs] def init(self, data: _JsonObject) -> None: """Perform implementation-specific initialization.""" super().init(data) # Icon and label. # h1 - class page (or 'generic'). # h2 - spec / category lines: list[str] = [ f"### {icon_url(str(data['icon']))} {data['label']}" ] # Macro description. if data.get("markdown"): lines.append(data["markdown"]) # type: ignore del data["markdown"] # Macro title and text. lines.append(f"Title: `{data['title']}`.") lines.append( linesep.join( ["```", data["text"], "```"], # type: ignore ) ) self.short_markdown = (linesep + linesep).join(lines) self.set_markdown(markdown=self.short_markdown, config=data)