gekomad / automatic-type-class-derivation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Automatic type class derivation in Scala 2 and Scala 3

Scala 2

    import core.Schema
    import core.Header._

    case class Foo(a: Int, c: String)

    val fields: List[String] = fieldNames[Foo]

    assert(fields == List("a", "c"))


    val list: List[String]   = List("1", "foo")

    val p: Map[String, String] = fields.zip(list).toMap // Map(a -> 1, c -> foo)
    val schema                 = Schema.of[Foo]

    assert(schema.readFrom(p) == Right(Foo(1, "foo")))
    cd scala2
    sbt test

Scala 3

    import core.list2class
    import core.Header.fieldNames

    case class Foo(a: Int, c: String)

    val fields: List[String] = fieldNames[Foo]

    assert(fields == List("a", "c"))


    val list: List[String] = List("1", "foo")

    assert(list2class[Foo](list) == Right(Foo(1, "foo")))
    cd scala3
    sbt test

About


Languages

Language:Scala 100.0%