Checkpoint initial implementation
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user