blob: f325f25e6ae18116feda8b1024a6ba395f241744 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
"""
Utility methods. Should not be imported from outside of :module:`configlib`
"""
import re
from typing import List
def parse_case(any_case: str) -> List[str]:
"""
parses a multiword string from cases like PascalCase or snake_case
:param any_case: the multi-word string
:return: the words lowercased as an array
"""
if '_' in any_case:
return any_case.lower().split('_')
if '-' in any_case:
return any_case.lower().split('-')
return [word.lower() for word in re.split('(?<=[a-z0-9])(?=[A-Z])', any_case)]
def snake_case(any_case: str) -> str:
"""
parses a multiword string from cases like PascalCase or snake_case
:param any_case: the multi-word string
:return: the words in snake_case
"""
return '_'.join(parse_case(any_case))
def pascal_case(any_case: str) -> str:
"""
parses a multiword string from cases like PascalCase or snake_case
:param any_case: the multi-word string
:return: the words in PascalCase
"""
return ''.join(word.capitalize() for word in parse_case(any_case))
|