corrected camel case converter

This commit is contained in:
Matthias Bisping 2022-03-31 15:18:59 +02:00
parent d4604a2cb5
commit 4ab9f0d89b
2 changed files with 15 additions and 6 deletions

View File

@ -1,16 +1,25 @@
from funcy import walk_keys, walk
from image_prediction.formatter.formatter import Formatter
class Snake2CamelCaseKeyFormatter(Formatter):
@staticmethod
def __format(key: str):
def __format_key(key):
if isinstance(key, str):
head, *tail = key.split("_")
return head + "".join(map(lambda s: s.title(), tail))
else:
return key
def __format(self, data):
if not isinstance(data, dict):
return data
keys_formatted = list(map(self.__format_key, data))
return dict(zip(keys_formatted, map(self.__format, data.values())))
def format(self, data):
return walk(self.__format, data)
return self.__format(data)

View File

@ -18,5 +18,5 @@ def camel_case_data():
return {"aKey": {"key": None, "key2": ["may_not_be_changed"]}, 2: {"yetAnotherKey": None}}
# def test_camel_case_key_formatter(snake_case_data, camel_case_data):
# assert Snake2CamelCaseKeyFormatter()(snake_case_data) == camel_case_data
def test_camel_case_key_formatter(snake_case_data, camel_case_data):
assert Snake2CamelCaseKeyFormatter()(snake_case_data) == camel_case_data