32 lines
994 B
Python
32 lines
994 B
Python
import re
|
|
|
|
import roman
|
|
|
|
CAMEL_CASE_TO_PSEUDO_SNAKE_CASE_CONVERSION_REGEX_1 = re.compile('(.)([A-Z][a-z]+)')
|
|
CAMEL_CASE_TO_PSEUDO_SNAKE_CASE_CONVERSION_REGEX_2 = re.compile('([a-z0-9])([A-Z])')
|
|
|
|
|
|
def convert_camel_case_to_pseudo_snake_case(text: str) -> str:
|
|
"""
|
|
Converts camel case to pseudo snake case using hyphen instead of
|
|
underscore.
|
|
|
|
E. g. ThisText is converted to this-text.
|
|
|
|
Credits: epost (http://stackoverflow.com/a/1176023)
|
|
"""
|
|
s1 = CAMEL_CASE_TO_PSEUDO_SNAKE_CASE_CONVERSION_REGEX_1.sub(r'\1-\2', text)
|
|
return CAMEL_CASE_TO_PSEUDO_SNAKE_CASE_CONVERSION_REGEX_2.sub(r'\1-\2', s1).lower()
|
|
|
|
|
|
def to_roman(number: int) -> str:
|
|
"""
|
|
Converts an arabic number within range from 1 to 4999 to the
|
|
corresponding roman number. Returns the input converted as string on error
|
|
conditions or higher numbers.
|
|
"""
|
|
try:
|
|
return roman.toRoman(number)
|
|
except (roman.NotIntegerError, roman.OutOfRangeError):
|
|
return str(number)
|