ingredient aliases

This commit is contained in:
Emi Vasilek 2023-11-01 23:31:22 +01:00
parent 7cf5b7ef29
commit 4cc0656e88

View file

@ -31,7 +31,7 @@ class Units:
class Ingredient:
def load(self, dct: Dict[str, Any]) -> List[str]:
issues = []
issues += assert_dict(dct, ["name"], ["wdid", "pricedb"])
issues += assert_dict(dct, ["name"], ["wdid", "pricedb", "aliases"])
assert_type(dct, "name", str)
self.name = dct["name"]
@ -47,6 +47,13 @@ class Ingredient:
self.pricedb = PriceDBs()
issues += self.pricedb.load(dct["pricedb"])
self.aliases = []
if "aliases" in dct:
assert_list(dct["aliases"])
for elem in dct["aliases"]:
assert_type(elem, "", str)
self.aliases.append(elem)
return issues
@ -65,7 +72,7 @@ class Ingredients:
def get(self, name: str) -> Optional[Ingredient]:
for ing in self.ingredients:
if ing.name == name:
if ing.name == name or name in ing.aliases:
return ing
raise RuntimeError(f"ingredient {name} not found")