From ea3fb8ca7fd9cd04e7e91544ee9260671431eafe Mon Sep 17 00:00:00 2001 From: KKlochko Date: Tue, 20 Jun 2023 13:39:52 +0300 Subject: [PATCH] Add formatters for Company, Category, Item models. --- src/fmt/category_formatter.py | 23 +++++++++++++++++++++++ src/fmt/company_formatter.py | 12 ++++++++++++ src/fmt/item_formatter.py | 19 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 src/fmt/category_formatter.py create mode 100644 src/fmt/company_formatter.py create mode 100644 src/fmt/item_formatter.py diff --git a/src/fmt/category_formatter.py b/src/fmt/category_formatter.py new file mode 100644 index 0000000..95d0ef9 --- /dev/null +++ b/src/fmt/category_formatter.py @@ -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 + diff --git a/src/fmt/company_formatter.py b/src/fmt/company_formatter.py new file mode 100644 index 0000000..8cdeb5d --- /dev/null +++ b/src/fmt/company_formatter.py @@ -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 + diff --git a/src/fmt/item_formatter.py b/src/fmt/item_formatter.py new file mode 100644 index 0000000..07b1021 --- /dev/null +++ b/src/fmt/item_formatter.py @@ -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 +