-
Notifications
You must be signed in to change notification settings - Fork 155
/
syntax.scala
27 lines (21 loc) · 828 Bytes
/
syntax.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package eu.timepit.refined.cats
import cats.data.{NonEmptyList, ValidatedNec, ValidatedNel}
import cats.syntax.either._
import eu.timepit.refined.api.RefinedTypeOps
import eu.timepit.refined.types.numeric.PosInt
object syntax extends CatsRefinedTypeOpsSyntax with CatsNonEmptyListSyntax
trait CatsRefinedTypeOpsSyntax {
implicit class CatsRefinedTypeOps[FTP, T](rtOps: RefinedTypeOps[FTP, T]) {
def validate(t: T): ValidatedNel[String, FTP] =
validateNel(t)
def validateNec(t: T): ValidatedNec[String, FTP] =
rtOps.from(t).toValidatedNec
def validateNel(t: T): ValidatedNel[String, FTP] =
rtOps.from(t).toValidatedNel
}
}
trait CatsNonEmptyListSyntax {
implicit class CatsNonEmptyListRefinedOps[A](nel: NonEmptyList[A]) {
def refinedSize: PosInt = PosInt.unsafeFrom(nel.size)
}
}