92 lines
2.2 KiB
Python
92 lines
2.2 KiB
Python
import re
|
|
import string
|
|
import random
|
|
|
|
|
|
class String:
|
|
r"""Useful functions for strings"""
|
|
|
|
@staticmethod
|
|
def convert_to_camel_case(chars: str) -> str:
|
|
r"""Converts string to camel case
|
|
|
|
Parameter
|
|
---------
|
|
chars: :class:`str`
|
|
String to convert
|
|
|
|
Returns
|
|
-------
|
|
String converted to CamelCase
|
|
"""
|
|
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:
|
|
r"""Converts string to snake case
|
|
|
|
Parameter
|
|
---------
|
|
chars: :class:`str`
|
|
String to convert
|
|
|
|
Returns
|
|
-------
|
|
String converted to snake_case
|
|
"""
|
|
# convert to train-case to CamelCase
|
|
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', chars)
|
|
return re.sub(pattern2, r'\1_\2', file_name).lower()
|
|
|
|
@staticmethod
|
|
def first_to_upper(chars: str) -> str:
|
|
r"""Converts first char to upper
|
|
|
|
Parameter
|
|
---------
|
|
chars: :class:`str`
|
|
String to convert
|
|
|
|
Returns
|
|
-------
|
|
String with first char as upper
|
|
"""
|
|
return f'{chars[0].upper()}{chars[1:]}'
|
|
|
|
@staticmethod
|
|
def first_to_lower(chars: str) -> str:
|
|
r"""Converts first char to lower
|
|
|
|
Parameter
|
|
---------
|
|
chars: :class:`str`
|
|
String to convert
|
|
|
|
Returns
|
|
-------
|
|
String with first char as lower
|
|
"""
|
|
return f'{chars[0].lower()}{chars[1:]}'
|
|
|
|
@staticmethod
|
|
def random_string(chars: str, length: int) -> str:
|
|
r"""Creates random string by given chars and length
|
|
|
|
Returns
|
|
-------
|
|
String of random chars
|
|
"""
|
|
|
|
return ''.join(random.choice(chars) for _ in range(length))
|