dnd-rolltable/rolltable/tables.py
2024-02-17 15:24:13 -08:00

29 lines
748 B
Python

from pathlib import Path
from rolltable.types import RollTable
from typing import Any
def from_sources(names: list[str] = []) -> list:
return RollTable([
(Path(__file__).parent / "sources" / name).read_text()
for name in names
])
index = dict(
psychadelic_effects=from_sources(['psychadelic_effects.yaml']),
trinkets=from_sources(['trinkets.yaml']),
wild_magic=from_sources(['wild_magic.yaml']),
spells=from_sources(['spells.yaml']),
encounters=from_sources(['encounters.yaml']),
)
def __getattr__(name: str) -> Any:
try:
return index[name]
except KeyError:
if name in globals():
return globals()[name]
raise AttributeError(f"No such attribute: {name}")