Chimney Support

This module provides Transformer/PartialTransformer instances for refined types for Chimney.

Dependency

SBT:

libraryDependencies += "io.scalaland" %% "chimney" % "version"

Mill:

ivy"io.scalaland::chimney:version"

Following examples' dependencies

SBT:

libraryDependencies += "io.scalaland" %% "chimney" % "1.8.2"

Mill:

ivy"io.scalaland::chimney:1.8.2"

Transformer instances

Given Transformer for Iron enables using refined types with automatic derivation:

import io.scalaland.chimney.dsl.*

import io.github.iltotore.iron.*
import io.github.iltotore.iron.constraint.all.*
import io.github.iltotore.iron.chimney.given

final case class PositiveInt(i: Int :| Positive)
final case class RawInt(i: Int)

PositiveInt(1).transformInto[RawInt].i // 1

RawInt(-1).transformIntoPartial[PositiveInt].asErrorPathMessageStrings // List((i,Should be strictly positive))

RawInt(100).transformIntoPartial[PositiveInt] // Value(PositiveInt(100))

type PureInt = PureInt.T
object PureInt extends RefinedType[Int, Pure]

final case class PureIntW(i: PureInt)

RawInt(1).transformInto[PureIntW].i.value // 1