rivet/schema.py

26 lines
728 B
Python
Raw Normal View History

2023-11-24 13:34:44 +00:00
import yaml
from config import Config
from renderer import Renderer
from structure import Structure
class InstructionSetSchema:
2023-11-24 14:01:51 +00:00
def __init__(self, path: str, configPath: str = "config.json") -> None:
self.config = Config(configPath)
2023-11-24 13:34:44 +00:00
self.path = path
self.load()
def load(self) -> None:
with open(self.path, "r") as f:
schema = yaml.safe_load(f)
self.structures = {}
for id_, data in schema["structures"].items():
id_ = str(id_)
self.structures[id_] = Structure.load(id_, data)
def save(self, path: str) -> None:
renderer = Renderer(self.config)
renderer.render(self)
renderer.save(path)