diff --git a/modules/core/src/main/scala-3/tethys/derivation/ConfigurationMacroUtils.scala b/modules/core/src/main/scala-3/tethys/derivation/ConfigurationMacroUtils.scala index 2ec0bae..b4193ba 100644 --- a/modules/core/src/main/scala-3/tethys/derivation/ConfigurationMacroUtils.scala +++ b/modules/core/src/main/scala-3/tethys/derivation/ConfigurationMacroUtils.scala @@ -1148,6 +1148,18 @@ trait ConfigurationMacroUtils: Some(FieldStyle.CapitalizedSnakeCase) case '{ tethys.derivation.builder.FieldStyle.capitalizedSnakeCase } => Some(FieldStyle.CapitalizedSnakeCase) + case '{ tethys.derivation.builder.FieldStyle.snakecase } => + Some(FieldStyle.SnakeCase) + case '{ tethys.derivation.builder.FieldStyle.kebabcase } => + Some(FieldStyle.KebabCase) + case '{ tethys.derivation.builder.FieldStyle.lowerSnakecase } => + Some(FieldStyle.LowerSnakeCase) + case '{ tethys.derivation.builder.FieldStyle.lowerKebabcase } => + Some(FieldStyle.LowerKebabCase) + case '{ tethys.derivation.builder.FieldStyle.upperSnakecase } => + Some(FieldStyle.UpperSnakeCase) + case '{ tethys.derivation.builder.FieldStyle.upperKebabcase } => + Some(FieldStyle.UpperKebabCase) case _ => None @deprecated diff --git a/modules/core/src/main/scala-3/tethys/derivation/builder/FieldStyle.scala b/modules/core/src/main/scala-3/tethys/derivation/builder/FieldStyle.scala index 8b29e5c..bad9393 100644 --- a/modules/core/src/main/scala-3/tethys/derivation/builder/FieldStyle.scala +++ b/modules/core/src/main/scala-3/tethys/derivation/builder/FieldStyle.scala @@ -13,4 +13,7 @@ enum FieldStyle { case capitalize, uncapitalize, lowercase, uppercase case kebabCase, lowerKebabCase, upperKebabCase, capitalizedKebabCase case snakeCase, lowerSnakeCase, upperSnakeCase, capitalizedSnakeCase + + case kebabcase, lowerKebabcase, upperKebabcase + case snakecase, lowerSnakecase, upperSnakecase } diff --git a/modules/macro-derivation/src/test/scala-3/tethys/derivation/SemiautoReaderDerivationTest.scala b/modules/macro-derivation/src/test/scala-3/tethys/derivation/SemiautoReaderDerivationTest.scala index 573a03d..27d164b 100644 --- a/modules/macro-derivation/src/test/scala-3/tethys/derivation/SemiautoReaderDerivationTest.scala +++ b/modules/macro-derivation/src/test/scala-3/tethys/derivation/SemiautoReaderDerivationTest.scala @@ -435,6 +435,26 @@ class SemiautoReaderDerivationTest extends AnyFlatSpec with Matchers { ) } + it should "derive reader for fieldStyle from description 3" in { + given JsonReader[CamelCaseNames] = JsonReader.derived[CamelCaseNames] { + ReaderDerivationConfig.empty.withFieldStyle( + tethys.derivation.builder.FieldStyle.lowerSnakecase + ) + } + + read[CamelCaseNames]( + obj( + "some_param" -> 1, + "id_param" -> 2, + "simple" -> 3 + ) + ) shouldBe CamelCaseNames( + someParam = 1, + IDParam = 2, + simple = 3 + ) + } + it should "derive strict reader" in { implicit val reader: JsonReader[CamelCaseNames] = jsonReader[CamelCaseNames](