Skip to content

Commit ba648d6

Browse files
committed
Enhance split words
Keep "Response200" as "response_200", but don't make "s3config" become "s_3_config". :)
1 parent a731477 commit ba648d6

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

Diff for: openapi_python_client/utils.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ def sanitize(value: str) -> str:
1212

1313

1414
def split_words(value: str) -> List[str]:
15-
"""Split a string on non-capital letters and known delimiters"""
16-
value = " ".join(re.split("([A-Z]?[a-z]+)", value))
15+
"""Split a string on words and known delimiters"""
16+
# Put a space between lowercase letters and capital letters or numbers
17+
value = re.sub(r"([a-z])([A-Z0-9])", r"\1 \2", value)
18+
# Separate acronyms from words
19+
value = re.sub(r"([A-Z0-9]+)([A-Z][a-z]+)", r"\1 \2", value)
1720
return re.findall(rf"[^{delimiters}]+", value)
1821

1922

Diff for: tests/test_utils.py

+16
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,22 @@
33
from openapi_python_client import utils
44

55

6+
@pytest.mark.parametrize(
7+
"before, after",
8+
[
9+
("connectionID", ["connection", "ID"]),
10+
("connection_id", ["connection", "id"]),
11+
("connection-id", ["connection", "id"]),
12+
("Response200", ["Response", "200"]),
13+
("Response200Okay", ["Response", "200", "Okay"]),
14+
("S3Config", ["S3", "Config"]),
15+
("s3config", ["s3config"]),
16+
],
17+
)
18+
def test_split_words(before, after):
19+
assert utils.split_words(before) == after
20+
21+
622
def test_snake_case_uppercase_str():
723
assert utils.snake_case("HTTP") == "http"
824
assert utils.snake_case("HTTP RESPONSE") == "http_response"

0 commit comments

Comments
 (0)