1
|
|
|
""" |
2
|
|
|
PRIVATE MODULE: do not import (from) it directly. |
3
|
|
|
|
4
|
|
|
This module contains functions that can be used to transform keys of |
5
|
|
|
dictionaries. |
6
|
|
|
""" |
7
|
|
|
import re |
8
|
|
|
|
9
|
|
|
|
10
|
|
|
def camelcase(str_: str) -> str: |
11
|
|
|
""" |
12
|
|
|
Return ``s`` in camelCase. |
13
|
|
|
:param str_: the string that is to be transformed. |
14
|
|
|
:return: a string in camelCase. |
15
|
|
|
""" |
16
|
|
|
str_ = str_.replace('-', '_') |
17
|
|
|
splitted = str_.split('_') |
18
|
|
|
if len(splitted) > 1: |
19
|
|
|
str_ = ''.join([x.title() for x in splitted]) |
20
|
|
|
return str_[0].lower() + str_[1:] |
21
|
|
|
|
22
|
|
|
|
23
|
|
|
def snakecase(str_: str) -> str: |
24
|
|
|
""" |
25
|
|
|
Return ``s`` in snake_case. |
26
|
|
|
:param str_: the string that is to be transformed. |
27
|
|
|
:return: a string in snake_case. |
28
|
|
|
""" |
29
|
|
|
str_ = str_.replace('-', '_') |
30
|
|
|
str_ = str_[0].lower() + str_[1:] |
31
|
|
|
return re.sub(r'([a-z])([A-Z])', '\\1_\\2', str_).lower() |
32
|
|
|
|
33
|
|
|
|
34
|
|
|
def pascalcase(str_: str) -> str: |
35
|
|
|
""" |
36
|
|
|
Return ``s`` in PascalCase. |
37
|
|
|
:param str_: the string that is to be transformed. |
38
|
|
|
:return: a string in PascalCase. |
39
|
|
|
""" |
40
|
|
|
camelcase_str = camelcase(str_) |
41
|
|
|
return camelcase_str[0].upper() + camelcase_str[1:] |
42
|
|
|
|
43
|
|
|
|
44
|
|
|
def lispcase(str_: str) -> str: |
45
|
|
|
""" |
46
|
|
|
Return ``s`` in lisp-case. |
47
|
|
|
:param str_: the string that is to be transformed. |
48
|
|
|
:return: a string in lisp-case. |
49
|
|
|
""" |
50
|
|
|
return snakecase(str_).replace('_', '-') |
51
|
|
|
|