NOJIRA aggregate names
This commit is contained in:
@@ -10,13 +10,13 @@ class ItemBuilder:
|
|||||||
def __init__(self, orders: List[Order]):
|
def __init__(self, orders: List[Order]):
|
||||||
self.__item_names: List[str] = _flatten([o.items for o in orders])
|
self.__item_names: List[str] = _flatten([o.items for o in orders])
|
||||||
|
|
||||||
def _translate_part(self, old: str, new: str):
|
def _translate_part(self, old: str, new: str) -> None:
|
||||||
self.__item_names = [i.replace(old, new) for i in self.__item_names]
|
self.__item_names = [i.replace(old, new) for i in self.__item_names]
|
||||||
|
|
||||||
def _translate_whole(self, old: str, new: str):
|
def _translate_whole(self, old: str, new: str) -> None:
|
||||||
self.__item_names = [new if i == old else i for i in self.__item_names]
|
self.__item_names = [new if i == old else i for i in self.__item_names]
|
||||||
|
|
||||||
def _consolidate_names(self):
|
def _consolidate_names(self) -> None:
|
||||||
uq_item_names: List[str] = list(set(self.__item_names))
|
uq_item_names: List[str] = list(set(self.__item_names))
|
||||||
print(uq_item_names)
|
print(uq_item_names)
|
||||||
for idx, lhs in enumerate(uq_item_names):
|
for idx, lhs in enumerate(uq_item_names):
|
||||||
@@ -27,13 +27,7 @@ class ItemBuilder:
|
|||||||
print(lhs + ":" + rhs + " = " + str(distance))
|
print(lhs + ":" + rhs + " = " + str(distance))
|
||||||
self._translate_whole(lhs, rhs)
|
self._translate_whole(lhs, rhs)
|
||||||
|
|
||||||
def build(self) -> List[Item]:
|
def _aggregate_names(self) -> List[Item]:
|
||||||
self._translate_part("frietje", "friet")
|
|
||||||
self._translate_part("krul friet", "twister")
|
|
||||||
self._translate_part("krulfriet", "twister")
|
|
||||||
|
|
||||||
self._consolidate_names()
|
|
||||||
|
|
||||||
items: Dict[str, int] = {}
|
items: Dict[str, int] = {}
|
||||||
for item_name in self.__item_names:
|
for item_name in self.__item_names:
|
||||||
if item_name not in items:
|
if item_name not in items:
|
||||||
@@ -41,6 +35,15 @@ class ItemBuilder:
|
|||||||
items[item_name] += 1
|
items[item_name] += 1
|
||||||
return sorted([Item(n, a) for n, a in items.items()])
|
return sorted([Item(n, a) for n, a in items.items()])
|
||||||
|
|
||||||
|
def build(self) -> List[Item]:
|
||||||
|
self._translate_part("frietje", "friet")
|
||||||
|
self._translate_part("krul friet", "twister")
|
||||||
|
self._translate_part("krulfriet", "twister")
|
||||||
|
|
||||||
|
self._consolidate_names()
|
||||||
|
|
||||||
|
return self._aggregate_names()
|
||||||
|
|
||||||
|
|
||||||
def _flatten(t: List[List]) -> List:
|
def _flatten(t: List[List]) -> List:
|
||||||
return [item for sublist in t for item in sublist]
|
return [item for sublist in t for item in sublist]
|
||||||
|
|||||||
Reference in New Issue
Block a user