From 5800cbd2951e47b03826f77383794081328e5ac6 Mon Sep 17 00:00:00 2001 From: Roman-Statsura Date: Fri, 12 Apr 2024 00:55:57 +0400 Subject: [PATCH 1/4] Add readers and writers instances for cats non-empty collections --- build.sbt | 16 +++- .../tethys/integration/cats/instances.scala | 6 ++ .../cats/readers/CatsReaders.scala | 73 +++++++++++++++++++ .../cats/writers/CatsWriters.scala | 21 ++++++ .../integration/cats/CatsSupportTests.scala | 44 +++++++++++ 5 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala create mode 100644 modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala create mode 100644 modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala create mode 100644 modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala diff --git a/build.sbt b/build.sbt index 6ebd126f..95bae096 100644 --- a/build.sbt +++ b/build.sbt @@ -9,7 +9,7 @@ lazy val scala3 = "3.3.0" ThisBuild / scalaVersion := scala3 lazy val commonSettings = Seq( - version := "0.28.2", + version := "0.28.3", organization := "com.tethys-json", licenses := Seq("Apache-2.0" -> url("https://www.apache.org/licenses/LICENSE-2.0")), homepage := Some(url("https://github.com/tethys-json/tethys")), @@ -86,7 +86,7 @@ lazy val tethys = project.in(file(".")) crossScalaVersions := Seq.empty, commonSettings ) - .aggregate(core, `macro-derivation`, `jackson-211`, `jackson-212`, `jackson-213`, json4s, circe, refined, enumeratum) + .aggregate(core, `macro-derivation`, `jackson-211`, `jackson-212`, `jackson-213`, json4s, circe, refined, enumeratum, integrationCats) lazy val modules = file("modules") @@ -106,6 +106,18 @@ lazy val core = project.in(modules / "core") libraryDependencies ++= addScalaReflect(scalaVersion.value) ) +lazy val integrationCats = project.in(modules / "integrations/cats") + .settings(crossScalaSettings) + .settings(commonSettings) + .settings(testSettings) + .settings( + name := "tethys-int-cats", + libraryDependencies ++= Seq( + "org.typelevel" %% "cats-core" % "2.10.0", + ) + ) + .dependsOn(core) + lazy val `macro-derivation` = project.in(modules / "macro-derivation") .settings(crossScalaSettings) .settings(commonSettings) diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala b/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala new file mode 100644 index 00000000..005a97db --- /dev/null +++ b/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala @@ -0,0 +1,6 @@ +package tethys.integration.cats + +import tethys.integration.cats.readers.CatsReaders +import tethys.integration.cats.writers.CatsWriters + +object instances extends CatsReaders with CatsWriters diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala b/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala new file mode 100644 index 00000000..d915415d --- /dev/null +++ b/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala @@ -0,0 +1,73 @@ +package tethys.integration.cats.readers + +import cats.data._ +import tethys.readers.tokens.TokenIterator +import tethys.readers.{FieldName, ReaderError} +import tethys.JsonReader +import tethys.JsonReader.iterableReader + +import scala.collection.immutable.SortedSet + +trait CatsReaders { + + implicit def readerForNel[T: JsonReader]: JsonReader[NonEmptyList[T]] = + new JsonReader[NonEmptyList[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptyList[T] = + NonEmptyList.fromList(JsonReader[List[T]].read(it)) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"List is empty and can't be converted to NonEmptyList" + ) + } + } + + implicit def readerForNev[T: JsonReader]: JsonReader[NonEmptyVector[T]] = + new JsonReader[NonEmptyVector[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptyVector[T] = + NonEmptyVector.fromVector(JsonReader[Vector[T]].read(it)) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"Vector is empty and can't be converted to NonEmptyVector" + ) + } + } + + implicit def readerForNes[T: JsonReader: Ordering] + : JsonReader[NonEmptySet[T]] = + new JsonReader[NonEmptySet[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptySet[T] = + NonEmptySet.fromSet(SortedSet.from(JsonReader[Set[T]].read(it))) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"Set is empty and can't be converted to NonEmptySet" + ) + } + } + + implicit def readerForChain[T: JsonReader]: JsonReader[Chain[T]] = + JsonReader[Seq[T]].map(Chain.fromSeq) + + implicit def readerForNec[T: JsonReader]: JsonReader[NonEmptyChain[T]] = + new JsonReader[NonEmptyChain[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptyChain[T] = + NonEmptyChain.fromChain(JsonReader[Chain[T]].read(it)) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"Chain is empty and can't be converted to NonEmptyChain" + ) + } + } + +} diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala b/modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala new file mode 100644 index 00000000..f1760425 --- /dev/null +++ b/modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala @@ -0,0 +1,21 @@ +package tethys.integration.cats.writers + +import cats.data._ +import tethys.JsonWriter + +trait CatsWriters { + implicit def writerForNev[T: JsonWriter]: JsonWriter[NonEmptyVector[T]] = + JsonWriter[Vector[T]].contramap(_.toVector) + + implicit def writerForNel[T: JsonWriter]: JsonWriter[NonEmptyList[T]] = + JsonWriter[List[T]].contramap(_.toList) + + implicit def writerForNes[T: JsonWriter]: JsonWriter[NonEmptySet[T]] = + JsonWriter[Set[T]].contramap(_.toSortedSet) + + implicit def writerForChain[T: JsonWriter]: JsonWriter[Chain[T]] = + JsonWriter[List[T]].contramap(_.toList) + + implicit def writerForNec[T: JsonWriter]: JsonWriter[NonEmptyChain[T]] = + JsonWriter[Chain[T]].contramap(_.toChain) +} diff --git a/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala b/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala new file mode 100644 index 00000000..25db809f --- /dev/null +++ b/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala @@ -0,0 +1,44 @@ +package tethys.integration.cats + +import cats.data._ +import org.scalatest.flatspec.AnyFlatSpec +import org.scalatest.matchers.should.Matchers +import tethys.commons.TokenNode._ +import tethys.integration.cats.instances._ +import tethys.readers.ReaderError +import tethys.writers.tokens.SimpleTokenWriter._ + +class CatsSupportTests extends AnyFlatSpec with Matchers { + val nev: NonEmptyVector[String] = NonEmptyVector.of("a", "b") + val nel: NonEmptyList[Int] = NonEmptyList.of(1, 2) + val nes: NonEmptySet[String] = NonEmptySet.of("a", "b") + val chain: Chain[Int] = Chain.fromSeq(Seq(1, 2, 3)) + val nec: NonEmptyChain[String] = NonEmptyChain.of("a", "b", "c") + + behavior of "CatsWriters" + it should "work with non empty" in { + nev.asTokenList shouldBe arr("a", "b") + nel.asTokenList shouldBe arr(1, 2) + nes.asTokenList shouldBe arr("a", "b") + chain.asTokenList shouldBe arr(1, 2, 3) + nec.asTokenList shouldBe arr("a", "b", "c") + } + + behavior of "CatsReaders" + it should "work with non empty" in { + nev shouldBe arr("a", "b").tokensAs[NonEmptyVector[String]] + assertThrows[ReaderError](Nil.tokensAs[NonEmptyVector[String]]) + + nel shouldBe arr(1, 2).tokensAs[NonEmptyList[Int]] + assertThrows[ReaderError](Nil.tokensAs[NonEmptyList[Int]]) + + nes shouldBe arr("a", "b").tokensAs[NonEmptySet[String]] + assertThrows[ReaderError](Nil.tokensAs[NonEmptySet[String]]) + + chain shouldBe arr(1, 2, 3).tokensAs[Chain[Int]] + + nec shouldBe arr("a", "b", "c").tokensAs[NonEmptyChain[String]] + assertThrows[ReaderError](Nil.tokensAs[NonEmptyChain[String]]) + + } +} From fa8c6e6afeb80590967cfa686068bc97fe9c382d Mon Sep 17 00:00:00 2001 From: Roman-Statsura Date: Fri, 12 Apr 2024 17:01:41 +0400 Subject: [PATCH 2/4] fix problem with SortedSet --- .../integration/cats/NonEmptySetReader.scala | 26 +++++++++++++++++++ .../integration/cats/NonEmptySetReader.scala | 26 +++++++++++++++++++ .../NonEmptySetReader.scala | 26 +++++++++++++++++++ .../tethys/integration/cats/instances.scala | 2 +- .../cats/readers/CatsReaders.scala | 19 +------------- .../integration/cats/CatsSupportTests.scala | 16 ++++++------ 6 files changed, 88 insertions(+), 27 deletions(-) create mode 100644 modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala create mode 100644 modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala create mode 100644 modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala diff --git a/modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala b/modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala new file mode 100644 index 00000000..25ec13b8 --- /dev/null +++ b/modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala @@ -0,0 +1,26 @@ +package tethys.integration.cats + +import cats.data.NonEmptySet +import tethys.JsonReader +import tethys.readers.{FieldName, ReaderError} +import tethys.readers.tokens.TokenIterator + +import scala.collection.immutable.{Seq, SortedSet} + +trait NonEmptySetReader { + + implicit def readerForNes[T: JsonReader: Ordering] + : JsonReader[NonEmptySet[T]] = + new JsonReader[NonEmptySet[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptySet[T] = + NonEmptySet.fromSet(SortedSet(JsonReader[Seq[T]].read(it): _*)) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"Seq is empty and can't be converted to NonEmptySet" + ) + } + } +} diff --git a/modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala b/modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala new file mode 100644 index 00000000..fe12f86c --- /dev/null +++ b/modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala @@ -0,0 +1,26 @@ +package tethys.integration.cats + +import cats.data.NonEmptySet +import tethys.JsonReader +import tethys.readers.{FieldName, ReaderError} +import tethys.readers.tokens.TokenIterator + +import scala.collection.immutable.SortedSet + +trait NonEmptySetReader { + + implicit def readerForNes[T: JsonReader: Ordering] + : JsonReader[NonEmptySet[T]] = + new JsonReader[NonEmptySet[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptySet[T] = + NonEmptySet.fromSet(SortedSet.from(JsonReader[Seq[T]].read(it))) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"Seq is empty and can't be converted to NonEmptySet" + ) + } + } +} diff --git a/modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala b/modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala new file mode 100644 index 00000000..fe12f86c --- /dev/null +++ b/modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala @@ -0,0 +1,26 @@ +package tethys.integration.cats + +import cats.data.NonEmptySet +import tethys.JsonReader +import tethys.readers.{FieldName, ReaderError} +import tethys.readers.tokens.TokenIterator + +import scala.collection.immutable.SortedSet + +trait NonEmptySetReader { + + implicit def readerForNes[T: JsonReader: Ordering] + : JsonReader[NonEmptySet[T]] = + new JsonReader[NonEmptySet[T]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): NonEmptySet[T] = + NonEmptySet.fromSet(SortedSet.from(JsonReader[Seq[T]].read(it))) match { + case Some(value) => value + case None => + ReaderError.wrongJson( + s"Seq is empty and can't be converted to NonEmptySet" + ) + } + } +} diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala b/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala index 005a97db..3c7bbf92 100644 --- a/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala +++ b/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala @@ -3,4 +3,4 @@ package tethys.integration.cats import tethys.integration.cats.readers.CatsReaders import tethys.integration.cats.writers.CatsWriters -object instances extends CatsReaders with CatsWriters +object instances extends CatsReaders with CatsWriters with NonEmptySetReader diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala b/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala index d915415d..a2848d97 100644 --- a/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala +++ b/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala @@ -6,8 +6,6 @@ import tethys.readers.{FieldName, ReaderError} import tethys.JsonReader import tethys.JsonReader.iterableReader -import scala.collection.immutable.SortedSet - trait CatsReaders { implicit def readerForNel[T: JsonReader]: JsonReader[NonEmptyList[T]] = @@ -38,23 +36,8 @@ trait CatsReaders { } } - implicit def readerForNes[T: JsonReader: Ordering] - : JsonReader[NonEmptySet[T]] = - new JsonReader[NonEmptySet[T]] { - override def read( - it: TokenIterator - )(implicit fieldName: FieldName): NonEmptySet[T] = - NonEmptySet.fromSet(SortedSet.from(JsonReader[Set[T]].read(it))) match { - case Some(value) => value - case None => - ReaderError.wrongJson( - s"Set is empty and can't be converted to NonEmptySet" - ) - } - } - implicit def readerForChain[T: JsonReader]: JsonReader[Chain[T]] = - JsonReader[Seq[T]].map(Chain.fromSeq) + JsonReader[Seq[T]].map(Chain.fromIterableOnce) implicit def readerForNec[T: JsonReader]: JsonReader[NonEmptyChain[T]] = new JsonReader[NonEmptyChain[T]] { diff --git a/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala b/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala index 25db809f..1a8a6584 100644 --- a/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala +++ b/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala @@ -11,34 +11,34 @@ import tethys.writers.tokens.SimpleTokenWriter._ class CatsSupportTests extends AnyFlatSpec with Matchers { val nev: NonEmptyVector[String] = NonEmptyVector.of("a", "b") val nel: NonEmptyList[Int] = NonEmptyList.of(1, 2) - val nes: NonEmptySet[String] = NonEmptySet.of("a", "b") - val chain: Chain[Int] = Chain.fromSeq(Seq(1, 2, 3)) + val nes: NonEmptySet[Int] = NonEmptySet.of(1, 2, 3, 4) + val chain: Chain[Int] = Chain.fromIterableOnce(Seq(1, 2, 3)) val nec: NonEmptyChain[String] = NonEmptyChain.of("a", "b", "c") behavior of "CatsWriters" - it should "work with non empty" in { + it should "write non-empty" in { nev.asTokenList shouldBe arr("a", "b") nel.asTokenList shouldBe arr(1, 2) - nes.asTokenList shouldBe arr("a", "b") + nes.asTokenList shouldBe arr(1, 2, 3, 4) chain.asTokenList shouldBe arr(1, 2, 3) nec.asTokenList shouldBe arr("a", "b", "c") } behavior of "CatsReaders" - it should "work with non empty" in { + it should "read non-empty" in { nev shouldBe arr("a", "b").tokensAs[NonEmptyVector[String]] assertThrows[ReaderError](Nil.tokensAs[NonEmptyVector[String]]) nel shouldBe arr(1, 2).tokensAs[NonEmptyList[Int]] assertThrows[ReaderError](Nil.tokensAs[NonEmptyList[Int]]) - nes shouldBe arr("a", "b").tokensAs[NonEmptySet[String]] - assertThrows[ReaderError](Nil.tokensAs[NonEmptySet[String]]) + nes shouldBe arr(1, 2, 3, 4).tokensAs[NonEmptySet[Int]] + nes shouldBe arr(4, 4, 1, 3, 3, 2).tokensAs[NonEmptySet[Int]] + assertThrows[ReaderError](Nil.tokensAs[NonEmptySet[Int]]) chain shouldBe arr(1, 2, 3).tokensAs[Chain[Int]] nec shouldBe arr("a", "b", "c").tokensAs[NonEmptyChain[String]] assertThrows[ReaderError](Nil.tokensAs[NonEmptyChain[String]]) - } } From b28250144b4a89a729f2ceb64c0042aed7d098b6 Mon Sep 17 00:00:00 2001 From: Roman-Statsura Date: Tue, 23 Apr 2024 11:34:10 +0400 Subject: [PATCH 3/4] up version to 0.28.4 --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 95bae096..72c00958 100644 --- a/build.sbt +++ b/build.sbt @@ -9,7 +9,7 @@ lazy val scala3 = "3.3.0" ThisBuild / scalaVersion := scala3 lazy val commonSettings = Seq( - version := "0.28.3", + version := "0.28.4", organization := "com.tethys-json", licenses := Seq("Apache-2.0" -> url("https://www.apache.org/licenses/LICENSE-2.0")), homepage := Some(url("https://github.com/tethys-json/tethys")), From acd28d7bbb63ee18cba3a8979f0d939054c57d4d Mon Sep 17 00:00:00 2001 From: Roman-Statsura Date: Tue, 23 Apr 2024 12:46:18 +0400 Subject: [PATCH 4/4] renamed module name to tethys-cats --- build.sbt | 6 +++--- .../main/scala-2.12/tethys}/cats/NonEmptySetReader.scala | 2 +- .../main/scala-2.13+/tethys}/cats/NonEmptySetReader.scala | 2 +- .../src/main/scala-3/tethys.cats}/NonEmptySetReader.scala | 2 +- modules/cats/src/main/scala/tethys/cats/instances.scala | 6 ++++++ .../src/main/scala/tethys}/cats/readers/CatsReaders.scala | 2 +- .../src/main/scala/tethys}/cats/writers/CatsWriters.scala | 2 +- .../src/test/scala/tethys}/cats/CatsSupportTests.scala | 4 ++-- .../src/main/scala/tethys/integration/cats/instances.scala | 6 ------ 9 files changed, 16 insertions(+), 16 deletions(-) rename modules/{integrations/cats/src/main/scala-2.12/tethys/integration => cats/src/main/scala-2.12/tethys}/cats/NonEmptySetReader.scala (95%) rename modules/{integrations/cats/src/main/scala-2.13+/tethys/integration => cats/src/main/scala-2.13+/tethys}/cats/NonEmptySetReader.scala (95%) rename modules/{integrations/cats/src/main/scala-3/tethys.integration.cats => cats/src/main/scala-3/tethys.cats}/NonEmptySetReader.scala (95%) create mode 100644 modules/cats/src/main/scala/tethys/cats/instances.scala rename modules/{integrations/cats/src/main/scala/tethys/integration => cats/src/main/scala/tethys}/cats/readers/CatsReaders.scala (97%) rename modules/{integrations/cats/src/main/scala/tethys/integration => cats/src/main/scala/tethys}/cats/writers/CatsWriters.scala (94%) rename modules/{integrations/cats/src/test/scala/tethys/integration => cats/src/test/scala/tethys}/cats/CatsSupportTests.scala (95%) delete mode 100644 modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala diff --git a/build.sbt b/build.sbt index 72c00958..ae0b6df5 100644 --- a/build.sbt +++ b/build.sbt @@ -86,7 +86,7 @@ lazy val tethys = project.in(file(".")) crossScalaVersions := Seq.empty, commonSettings ) - .aggregate(core, `macro-derivation`, `jackson-211`, `jackson-212`, `jackson-213`, json4s, circe, refined, enumeratum, integrationCats) + .aggregate(core, `macro-derivation`, `jackson-211`, `jackson-212`, `jackson-213`, json4s, circe, refined, enumeratum, cats) lazy val modules = file("modules") @@ -106,12 +106,12 @@ lazy val core = project.in(modules / "core") libraryDependencies ++= addScalaReflect(scalaVersion.value) ) -lazy val integrationCats = project.in(modules / "integrations/cats") +lazy val cats = project.in(modules / "cats") .settings(crossScalaSettings) .settings(commonSettings) .settings(testSettings) .settings( - name := "tethys-int-cats", + name := "tethys-cats", libraryDependencies ++= Seq( "org.typelevel" %% "cats-core" % "2.10.0", ) diff --git a/modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala b/modules/cats/src/main/scala-2.12/tethys/cats/NonEmptySetReader.scala similarity index 95% rename from modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala rename to modules/cats/src/main/scala-2.12/tethys/cats/NonEmptySetReader.scala index 25ec13b8..853f1aa2 100644 --- a/modules/integrations/cats/src/main/scala-2.12/tethys/integration/cats/NonEmptySetReader.scala +++ b/modules/cats/src/main/scala-2.12/tethys/cats/NonEmptySetReader.scala @@ -1,4 +1,4 @@ -package tethys.integration.cats +package tethys.cats import cats.data.NonEmptySet import tethys.JsonReader diff --git a/modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala b/modules/cats/src/main/scala-2.13+/tethys/cats/NonEmptySetReader.scala similarity index 95% rename from modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala rename to modules/cats/src/main/scala-2.13+/tethys/cats/NonEmptySetReader.scala index fe12f86c..e7883f4b 100644 --- a/modules/integrations/cats/src/main/scala-2.13+/tethys/integration/cats/NonEmptySetReader.scala +++ b/modules/cats/src/main/scala-2.13+/tethys/cats/NonEmptySetReader.scala @@ -1,4 +1,4 @@ -package tethys.integration.cats +package tethys.cats import cats.data.NonEmptySet import tethys.JsonReader diff --git a/modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala b/modules/cats/src/main/scala-3/tethys.cats/NonEmptySetReader.scala similarity index 95% rename from modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala rename to modules/cats/src/main/scala-3/tethys.cats/NonEmptySetReader.scala index fe12f86c..e7883f4b 100644 --- a/modules/integrations/cats/src/main/scala-3/tethys.integration.cats/NonEmptySetReader.scala +++ b/modules/cats/src/main/scala-3/tethys.cats/NonEmptySetReader.scala @@ -1,4 +1,4 @@ -package tethys.integration.cats +package tethys.cats import cats.data.NonEmptySet import tethys.JsonReader diff --git a/modules/cats/src/main/scala/tethys/cats/instances.scala b/modules/cats/src/main/scala/tethys/cats/instances.scala new file mode 100644 index 00000000..94e89b30 --- /dev/null +++ b/modules/cats/src/main/scala/tethys/cats/instances.scala @@ -0,0 +1,6 @@ +package tethys.cats + +import tethys.cats.readers.CatsReaders +import tethys.cats.writers.CatsWriters + +object instances extends CatsReaders with CatsWriters with NonEmptySetReader diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala b/modules/cats/src/main/scala/tethys/cats/readers/CatsReaders.scala similarity index 97% rename from modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala rename to modules/cats/src/main/scala/tethys/cats/readers/CatsReaders.scala index a2848d97..4c2031ad 100644 --- a/modules/integrations/cats/src/main/scala/tethys/integration/cats/readers/CatsReaders.scala +++ b/modules/cats/src/main/scala/tethys/cats/readers/CatsReaders.scala @@ -1,4 +1,4 @@ -package tethys.integration.cats.readers +package tethys.cats.readers import cats.data._ import tethys.readers.tokens.TokenIterator diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala b/modules/cats/src/main/scala/tethys/cats/writers/CatsWriters.scala similarity index 94% rename from modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala rename to modules/cats/src/main/scala/tethys/cats/writers/CatsWriters.scala index f1760425..a14efa56 100644 --- a/modules/integrations/cats/src/main/scala/tethys/integration/cats/writers/CatsWriters.scala +++ b/modules/cats/src/main/scala/tethys/cats/writers/CatsWriters.scala @@ -1,4 +1,4 @@ -package tethys.integration.cats.writers +package tethys.cats.writers import cats.data._ import tethys.JsonWriter diff --git a/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala b/modules/cats/src/test/scala/tethys/cats/CatsSupportTests.scala similarity index 95% rename from modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala rename to modules/cats/src/test/scala/tethys/cats/CatsSupportTests.scala index 1a8a6584..7bd0c36d 100644 --- a/modules/integrations/cats/src/test/scala/tethys/integration/cats/CatsSupportTests.scala +++ b/modules/cats/src/test/scala/tethys/cats/CatsSupportTests.scala @@ -1,10 +1,10 @@ -package tethys.integration.cats +package tethys.cats import cats.data._ import org.scalatest.flatspec.AnyFlatSpec import org.scalatest.matchers.should.Matchers import tethys.commons.TokenNode._ -import tethys.integration.cats.instances._ +import instances._ import tethys.readers.ReaderError import tethys.writers.tokens.SimpleTokenWriter._ diff --git a/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala b/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala deleted file mode 100644 index 3c7bbf92..00000000 --- a/modules/integrations/cats/src/main/scala/tethys/integration/cats/instances.scala +++ /dev/null @@ -1,6 +0,0 @@ -package tethys.integration.cats - -import tethys.integration.cats.readers.CatsReaders -import tethys.integration.cats.writers.CatsWriters - -object instances extends CatsReaders with CatsWriters with NonEmptySetReader