Add formatters for Company, Category, Item models.

This commit is contained in:
2023-06-20 13:39:52 +03:00
parent d99c246de2
commit ea3fb8ca7f
3 changed files with 54 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
from src.fmt.abstract_formatter import AbstractFormatter
from src.fmt.item_formatter import ItemFormatter
class CategoryFormatter(AbstractFormatter):
def format(self, category) -> str:
name = category['name']
return f"#### {name}\n"
def format_all(self, cities: dict, header: str = "# Категорії\n\n") -> str:
formated_message = header
item_formatter = ItemFormatter()
for category in cities['data']:
formated_category = self.format(category)
formated_message += formated_category
if 'items' in category:
formated_items = item_formatter.format_all(category['items'])
formated_message += formated_items
return formated_message
+12
View File
@@ -0,0 +1,12 @@
from src.fmt.city_formatter import CityFormatter
class CompanyFormatter(CityFormatter):
def format_all(self, companies: dict, header: str = "# Компанії\n\n") -> str:
formated_message = header
for company in companies['data']:
formated_item = self.format(company)
formated_message += formated_item
return formated_message
+19
View File
@@ -0,0 +1,19 @@
from src.fmt.abstract_formatter import AbstractFormatter
class ItemFormatter(AbstractFormatter):
def format(self, item) -> str:
name = item['name']
price = item['price']
return f"- {name} - {price}\n"
def format_all(self, items: dict, header: str = "") -> str:
formated_message = header
items = items['data'] if 'data' in items else items
for item in items:
formated_item = self.format(item)
formated_message += formated_item
return formated_message