Skip to content

Commit 15b24e9

Browse files
committed
Fix #84 by improving functions that enforce snake_case and kebab-case for special cases
1 parent 43a9835 commit 15b24e9

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

macros/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMaker.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ object JsonCodecMaker {
7777
sb.append(ch)
7878
true
7979
} else {
80-
if (isPrecedingLowerCased) sb.append('_')
80+
if (isPrecedingLowerCased || i < len && isLowerCase(s.charAt(i))) sb.append('_')
8181
sb.append(toLowerCase(ch))
8282
false
8383
}
@@ -100,7 +100,7 @@ object JsonCodecMaker {
100100
sb.append(ch)
101101
true
102102
} else {
103-
if (isPrecedingLowerCased) sb.append('-')
103+
if (isPrecedingLowerCased || i < len && isLowerCase(s.charAt(i))) sb.append('-')
104104
sb.append(toLowerCase(ch))
105105
false
106106
}

macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,7 @@ class JsonCodecMakerSpec extends WordSpec with Matchers {
10831083
"transform snake_case names to camelCase" in {
10841084
JsonCodecMaker.enforceCamelCase("o_o") shouldBe "oO"
10851085
JsonCodecMaker.enforceCamelCase("o_ooo_") shouldBe "oOoo"
1086-
JsonCodecMaker.enforceCamelCase("O_OOO_111") shouldBe "oOoo111"
1086+
JsonCodecMaker.enforceCamelCase("OO_OOO_111") shouldBe "ooOoo111"
10871087
}
10881088
"transform kebab-case names to camelCase" in {
10891089
JsonCodecMaker.enforceCamelCase("o-o") shouldBe "oO"
@@ -1100,7 +1100,7 @@ class JsonCodecMakerSpec extends WordSpec with Matchers {
11001100
"transform camelCase names to snake_case" in {
11011101
JsonCodecMaker.enforce_snake_case("oO") shouldBe "o_o"
11021102
JsonCodecMaker.enforce_snake_case("oOoo") shouldBe "o_ooo"
1103-
JsonCodecMaker.enforce_snake_case("oOoo111") shouldBe "o_ooo_111"
1103+
JsonCodecMaker.enforce_snake_case("OOOoo111") shouldBe "oo_ooo_111"
11041104
}
11051105
"transform kebab-case names to snake_case" in {
11061106
JsonCodecMaker.enforce_snake_case("o-O") shouldBe "o_o"
@@ -1117,7 +1117,7 @@ class JsonCodecMakerSpec extends WordSpec with Matchers {
11171117
"transform camelCase names to kebab-case" in {
11181118
JsonCodecMaker.`enforce-kebab-case`("oO") shouldBe "o-o"
11191119
JsonCodecMaker.`enforce-kebab-case`("oOoo") shouldBe "o-ooo"
1120-
JsonCodecMaker.`enforce-kebab-case`("oOoo111") shouldBe "o-ooo-111"
1120+
JsonCodecMaker.`enforce-kebab-case`("OOOoo111") shouldBe "oo-ooo-111"
11211121
}
11221122
"transform snake_case names to kebab-case" in {
11231123
JsonCodecMaker.`enforce-kebab-case`("o_O") shouldBe "o-o"

0 commit comments

Comments
 (0)