Skip to content

Commit e66308e

Browse files
authored
Merge pull request #71 from hit9/pr-69-test-case
merging #69
2 parents c5c5ea1 + 07c1c5b commit e66308e

3 files changed

Lines changed: 20 additions & 5 deletions

File tree

changes.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
.. currentmodule:: bitproto
22

3+
Version 1.2.1 (Pending)
4+
-----------------------
5+
6+
.. _version-1.2.1:
7+
8+
- Bugfix: `pascal_case` formatter. ISSUE #68, PR #69.
9+
10+
311
Version 1.2.0
412
-------------
513

compiler/bitproto/utils.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,16 +343,19 @@ def pascal_case(word: str) -> str:
343343
344344
>>> pascal_case("someWord")
345345
"SomeWord"
346+
347+
>>> pascal_case("my_prefix_someWord")
348+
"MyPrefixSomeWord"
346349
"""
347350
items: List[str] = []
348351
parts = word.split("_")
349-
contains_underscore = len(parts) > 1
352+
350353
for part in parts:
351354
if part:
352-
if contains_underscore:
353-
items.append(part.title())
354-
else:
355-
first_char, remain_part = part[0], part[1:]
355+
first_char, remain_part = part[0], part[1:]
356+
if remain_part and remain_part.isupper(): # UPPERCASE
357+
items.append(first_char.upper() + remain_part.lower())
358+
else: # flatcase or camelCase or PascalCase
356359
items.append(first_char.upper() + remain_part)
357360
return "".join(items)
358361

tests/test_compiler/test_util.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ def test_pascal_case() -> None:
122122
assert pascal_case("PASCAL_CASE") == "PascalCase"
123123
assert pascal_case("pascal_Case") == "PascalCase"
124124
assert pascal_case("PascalCase") == "PascalCase"
125+
# issue#68
126+
# https://github.com/hit9/bitproto/issues/68#issuecomment-3219647987
127+
assert pascal_case("my_prefix_someWord") == "MyPrefixSomeWord"
128+
assert pascal_case("my_prefix_MyMessageType") == "MyPrefixMyMessageType"
125129

126130

127131
def test_snake_case() -> None:

0 commit comments

Comments
 (0)