From 0e3127a18c53f80e5fc7e2fd51e3b3027312976d Mon Sep 17 00:00:00 2001 From: Andriy Plokhotnyuk Date: Wed, 15 Aug 2018 19:41:46 +0200 Subject: [PATCH] Fix #145 for snake-case and kebab-case --- .../plokhotnyuk/jsoniter_scala/macros/JsonCodecMaker.scala | 2 +- .../plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/jsoniter-scala-macros/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMaker.scala b/jsoniter-scala-macros/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMaker.scala index 1de40c5dd..3171d80c0 100644 --- a/jsoniter-scala-macros/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMaker.scala +++ b/jsoniter-scala-macros/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMaker.scala @@ -89,7 +89,7 @@ object JsonCodecMaker { sb.append(ch) true } else { - if (isPrecedingLowerCased || i < len && isLowerCase(s.charAt(i))) sb.append(separator) + if (isPrecedingLowerCased || i > 1 && i < len && isLowerCase(s.charAt(i))) sb.append(separator) sb.append(toLowerCase(ch)) false } diff --git a/jsoniter-scala-macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala b/jsoniter-scala-macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala index aa0a128eb..5f725e05c 100644 --- a/jsoniter-scala-macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala +++ b/jsoniter-scala-macros/src/test/scala/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodecMakerSpec.scala @@ -1280,6 +1280,7 @@ class JsonCodecMakerSpec extends WordSpec with Matchers { JsonCodecMaker.enforceCamelCase("o_o") shouldBe "oO" JsonCodecMaker.enforceCamelCase("o_ooo_") shouldBe "oOoo" JsonCodecMaker.enforceCamelCase("OO_OOO_111") shouldBe "ooOoo111" + JsonCodecMaker.enforceCamelCase("ooo_111") shouldBe "ooo111" } "transform kebab-case names to camelCase" in { JsonCodecMaker.enforceCamelCase("o-o") shouldBe "oO" @@ -1297,6 +1298,7 @@ class JsonCodecMakerSpec extends WordSpec with Matchers { JsonCodecMaker.enforce_snake_case("oO") shouldBe "o_o" JsonCodecMaker.enforce_snake_case("oOoo") shouldBe "o_ooo" JsonCodecMaker.enforce_snake_case("OOOoo111") shouldBe "oo_ooo_111" + JsonCodecMaker.enforce_snake_case("Ooo111") shouldBe "ooo_111" } "transform kebab-case names to snake_case" in { JsonCodecMaker.enforce_snake_case("o-O") shouldBe "o_o" @@ -1314,6 +1316,7 @@ class JsonCodecMakerSpec extends WordSpec with Matchers { JsonCodecMaker.`enforce-kebab-case`("oO") shouldBe "o-o" JsonCodecMaker.`enforce-kebab-case`("oOoo") shouldBe "o-ooo" JsonCodecMaker.`enforce-kebab-case`("OOOoo111") shouldBe "oo-ooo-111" + JsonCodecMaker.`enforce-kebab-case`("Ooo111") shouldBe "ooo-111" } "transform snake_case names to kebab-case" in { JsonCodecMaker.`enforce-kebab-case`("o_O") shouldBe "o-o"