Files
mcpacker/tungston/core/geology/mineralcatalog.py
T

27 lines
799 B
Python

from tungston.core.geology.mineral import Mineral
from typing import Iterator
# Class ############################################################################################
class MineralCatalog:
def __init__(self, minerals:tuple[Mineral]=None):
self._minerals = {}
for mineral in (minerals or []):
self.add(mineral)
def add(self, mineral:Mineral) -> "MineralCatalog":
if mineral.name in self._minerals:
raise Exception(f"Catalog already contains an entry for {mineral.name}")
self._minerals[mineral.name] = mineral
def all(self) -> Iterator[Mineral]:
for mineral in self._minerals.values():
yield mineral
def get(self, name:str) -> Mineral|None:
return self._minerals.get(name, None)