Skip to content

Commit

Permalink
Expose RefinementProvider methods (#1388)
Browse files Browse the repository at this point in the history
* Expose RefinementProvider methods

* Expose patternConstraint too

* Rename param
  • Loading branch information
msosnicki committed Feb 6, 2024
1 parent 4e3cb68 commit e13a718
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions modules/core/src/smithy4s/RefinementProvider.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,25 +44,34 @@ object RefinementProvider extends LowPriorityImplicits {

type Simple[C, A] = RefinementProvider[C, A, A]

def lengthConstraint[A](getLength: A => Int): Simple[Length, A] =
new LengthConstraint(getLength)

def rangeConstraint[A, N: Numeric](getValue: A => N): Simple[Range, A] =
new RangeConstraint[A, N](getValue)

def patternConstraint[A](getValue: A => String): Simple[Pattern, A] =
new PatternConstraint[A](getValue)

implicit val stringLengthConstraint: Simple[Length, String] =
new LengthConstraint[String](_.length)
lengthConstraint[String](_.length)

implicit val blobLengthConstraint: Simple[Length, Blob] =
new LengthConstraint[Blob](_.size)
lengthConstraint[Blob](_.size)

implicit def iterableLengthConstraint[C[_], A](implicit
ev: C[A] <:< Iterable[A]
): Simple[Length, C[A]] =
new LengthConstraint[C[A]](ca => ev(ca).size)
lengthConstraint[C[A]](ca => ev(ca).size)

implicit def mapLengthConstraint[K, V]: Simple[Length, Map[K, V]] =
new LengthConstraint[Map[K, V]](_.size)
lengthConstraint[Map[K, V]](_.size)

implicit val stringPatternConstraints: Simple[Pattern, String] =
new PatternConstraint[String](identity)
patternConstraint[String](identity)

implicit def numericRangeConstraints[N: Numeric]
: Simple[smithy.api.Range, N] = new RangeConstraint[N, N](identity[N])
: Simple[smithy.api.Range, N] = rangeConstraint[N, N](identity)

// Lazy to avoid some pernicious recursive initialisation issue between
// the ShapeId static object and the generated code that makes use of it,
Expand Down

0 comments on commit e13a718

Please sign in to comment.