Skip to content

Commit 0ed4383

Browse files
committed
Fix camel to snake case conversion with digits (#140)
1 parent a32fb28 commit 0ed4383

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

src/graphql/pyutils/convert_case.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
__all__ = ["camel_to_snake", "snake_to_camel"]
66

7-
_re_camel_to_snake = re.compile(r"([a-z]|[A-Z]+)(?=[A-Z])")
7+
_re_camel_to_snake = re.compile(r"([a-z]|[A-Z0-9]+)(?=[A-Z])")
88
_re_snake_to_camel = re.compile(r"(_)([a-z\d])")
99

1010

tests/pyutils/test_convert_case.py

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,54 @@
33

44
def describe_camel_to_snake():
55
def converts_typical_names():
6-
result = camel_to_snake("CamelCase")
7-
assert result == "camel_case"
8-
result = camel_to_snake("InputObjectTypeExtensionNode")
9-
assert result == "input_object_type_extension_node"
6+
assert camel_to_snake("CamelCase") == "camel_case"
7+
assert (
8+
camel_to_snake("InputObjectTypeExtensionNode")
9+
== "input_object_type_extension_node"
10+
)
11+
assert camel_to_snake("CamelToSnake") == "camel_to_snake"
1012

1113
def may_start_with_lowercase():
12-
result = camel_to_snake("CamelCase")
13-
assert result == "camel_case"
14+
assert camel_to_snake("camelCase") == "camel_case"
1415

1516
def works_with_acronyms():
16-
result = camel_to_snake("SlowXMLParser")
17-
assert result == "slow_xml_parser"
18-
result = camel_to_snake("FastGraphQLParser")
19-
assert result == "fast_graph_ql_parser"
17+
assert camel_to_snake("SlowXMLParser") == "slow_xml_parser"
18+
assert camel_to_snake("FastGraphQLParser") == "fast_graph_ql_parser"
19+
20+
def works_with_numbers():
21+
assert camel_to_snake("Python3Script") == "python3_script"
22+
assert camel_to_snake("camel2snake") == "camel2snake"
2023

2124
def keeps_already_snake():
22-
result = camel_to_snake("snake_case")
23-
assert result == "snake_case"
25+
assert camel_to_snake("snake_case") == "snake_case"
2426

2527

2628
def describe_snake_to_camel():
2729
def converts_typical_names():
28-
result = snake_to_camel("snake_case")
29-
assert result == "SnakeCase"
30-
result = snake_to_camel("input_object_type_extension_node")
31-
assert result == "InputObjectTypeExtensionNode"
30+
assert snake_to_camel("snake_case") == "SnakeCase"
31+
assert (
32+
snake_to_camel("input_object_type_extension_node")
33+
== "InputObjectTypeExtensionNode"
34+
)
35+
assert snake_to_camel("snake_to_camel") == "SnakeToCamel"
3236

3337
def may_start_with_uppercase():
34-
result = snake_to_camel("Snake_case")
35-
assert result == "SnakeCase"
38+
assert snake_to_camel("Snake_case") == "SnakeCase"
3639

3740
def works_with_acronyms():
38-
result = snake_to_camel("slow_xml_parser")
39-
assert result == "SlowXmlParser"
40-
result = snake_to_camel("fast_graph_ql_parser")
41-
assert result == "FastGraphQlParser"
41+
assert snake_to_camel("slow_xml_parser") == "SlowXmlParser"
42+
assert snake_to_camel("fast_graph_ql_parser") == "FastGraphQlParser"
43+
44+
def works_with_numbers():
45+
assert snake_to_camel("python3_script") == "Python3Script"
46+
assert snake_to_camel("snake2camel") == "Snake2camel"
4247

4348
def keeps_already_camel():
44-
result = snake_to_camel("CamelCase")
45-
assert result == "CamelCase"
49+
assert snake_to_camel("CamelCase") == "CamelCase"
4650

4751
def can_produce_lower_camel_case():
48-
result = snake_to_camel("snake_case", upper=False)
49-
assert result == "snakeCase"
50-
result = snake_to_camel("input_object_type_extension_node", False)
51-
assert result == "inputObjectTypeExtensionNode"
52+
assert snake_to_camel("snake_case", upper=False) == "snakeCase"
53+
assert (
54+
snake_to_camel("input_object_type_extension_node", False)
55+
== "inputObjectTypeExtensionNode"
56+
)

0 commit comments

Comments
 (0)