OpenSlides/openslides/utils/utils.py

32 lines
994 B
Python
Raw Normal View History

import re
2011-09-02 20:46:24 +02:00
import roman
2012-02-09 02:29:38 +01:00
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])')
2017-08-24 12:26:55 +02:00
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()
2017-08-24 12:26:55 +02:00
def to_roman(number: int) -> str:
2014-04-27 21:01:23 +02:00
"""
2015-09-16 00:55:27 +02:00
Converts an arabic number within range from 1 to 4999 to the
2017-08-24 12:26:55 +02:00
corresponding roman number. Returns the input converted as string on error
conditions or higher numbers.
2014-04-27 21:01:23 +02:00
"""
try:
return roman.toRoman(number)
except (roman.NotIntegerError, roman.OutOfRangeError):
2017-08-24 12:26:55 +02:00
return str(number)