From 036b9dcc2dddb041095afd3fcdf650f14666e102 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 11 Apr 2021 13:00:05 +0200 Subject: [PATCH] Added more functions to string --- src/cpl/utils/string.py | 47 +++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/src/cpl/utils/string.py b/src/cpl/utils/string.py index cff170ee..ebca8382 100644 --- a/src/cpl/utils/string.py +++ b/src/cpl/utils/string.py @@ -1,4 +1,6 @@ import re +import string +import random class String: @@ -7,35 +9,58 @@ class String: """ @staticmethod - def convert_to_snake_case(name: str) -> str: + def convert_to_camel_case(chars: str) -> str: + """ + Converts string to camel case + :param chars: + :return: + """ + converted_name = chars + char_set = string.punctuation + ' ' + for char in char_set: + if char in converted_name: + converted_name = ''.join(word.title() for word in converted_name.split(char)) + + return converted_name + + @staticmethod + def convert_to_snake_case(chars: str) -> str: """ Converts string to snake case - :param name: + :param chars: :return: """ # convert to train-case to CamelCase - if '-' in name: - name = ''.join(word.title() for word in name.split('-')) + if '-' in chars: + chars = ''.join(word.title() for word in chars.split('-')) pattern1 = re.compile(r'(.)([A-Z][a-z]+)') pattern2 = re.compile(r'([a-z0-9])([A-Z])') - file_name = re.sub(pattern1, r'\1_\2', name) + file_name = re.sub(pattern1, r'\1_\2', chars) return re.sub(pattern2, r'\1_\2', file_name).lower() @staticmethod - def first_to_upper(string: str) -> str: + def first_to_upper(chars: str) -> str: """ Converts first char to upper - :param string: + :param chars: :return: """ - return f'{string[0].upper()}{string[1:]}' + return f'{chars[0].upper()}{chars[1:]}' @staticmethod - def first_to_lower(string: str) -> str: + def first_to_lower(chars: str) -> str: """ Converts first char to lower - :param string: + :param chars: :return: """ - return f'{string[0].lower()}{string[1:]}' + return f'{chars[0].lower()}{chars[1:]}' + + @staticmethod + def random_string(chars: str, length: int) -> str: + """ + Creates random string by given chars and length + """ + + return ''.join(random.choice(chars) for _ in range(length))