ValidationModule

@implicitNotFound("ValidationModule[${F}, ${V}, ${E}] not found")
abstract class ValidationModule[F[_], V[_], E](implicit val F: Effect[F], val V: Validated[V]) extends ModuleAllSyntax[F, V, E] with RuleSyntax with PolicySyntax with FieldSyntax with ValidatedSyntax

God object that provides all validation syntax for choosen Effect - F[_], Validated - V[_] and Error - E Requires user to provide implicit instances of Effect and Validated typeclasses for choosen F[_] and V[_].

Source:
ValidationModule.scala
trait ModuleAllSyntax[F, V, E]
trait ModuleIterableSyntax[F, V, E]
trait ModuleMapSyntax[F, V, E]
trait ModuleStringSyntax[F, V, E]
trait ModuleOptionSyntax[F, V, E]
trait ModuleOrderingSyntax[F, V, E]
trait ModuleBooleanSyntax[F, V, E]
trait ModuleGenericSyntax[F, V, E]
class Object
trait Matchable
class Any

Type members

Classlikes

object MRule

Convenient accessors makes type inference better

Convenient accessors makes type inference better

Source:
ValidationModule.scala

Types

type MPolicy[P] = Policy[P]

jap.fields.ValidationPolicy alias. Infers F, V, E

final type MRule = Rule[F, V, E]

jap.fields.Rule alias. F, V, E infered from jap.fields.ValidationModule Very useful for type inference when building custom validations

jap.fields.Rule alias. F, V, E infered from jap.fields.ValidationModule Very useful for type inference when building custom validations

Source:
ValidationModule.scala
type Policy[P] = ValidationPolicy[P, F, V, E]

jap.fields.ValidationPolicy alias. Infers F, V, E

Value members

Inherited methods

def someOrValid(rule: => Option[Rule[F, V, E]])(implicit F: Effect[F], V: Validated[V]): Rule[F, V, E]

Unpacks rule from Option if None returns valid

Unpacks rule from Option if None returns valid

Inherited from:
ModuleOptionSyntax
Source:
OptionSyntax.scala

Concrete fields

Extensions

Inherited extensions

extension [P, F[_], V[_], E](builder: ValidationPolicyBuilder[P, F, V, E])
inline def subRule[S1, S2, S3](inline selector1: P => S1, inline selector2: P => S2, inline selector3: P => S3)(rules: (Field[S1], Field[S2], Field[S3]) => Rule[F, V, E]*): ValidationPolicyBuilder[P, F, V, E]

Adds new subrule to builder. Same as subRule but for 3 subrules

Adds new subrule to builder. Same as subRule but for 3 subrules

Inherited from:
PolicySyntax
Source:
PolicySyntax.scala
inline def subRule[S1, S2](inline selector1: P => S1, inline selector2: P => S2)(rules: (Field[S1], Field[S2]) => Rule[F, V, E]*): ValidationPolicyBuilder[P, F, V, E]

Adds new subrule to builder. Same as subRule but for 2 subrules

Adds new subrule to builder. Same as subRule but for 2 subrules

Inherited from:
PolicySyntax
Source:
PolicySyntax.scala
inline def subRule[S](inline selector: P => S)(rules: Field[S] => Rule[F, V, E]*): ValidationPolicyBuilder[P, F, V, E]

Adds new subrule to builder. Uses selector to create jap.fields.Field, rules are applied to that field

Adds new subrule to builder. Uses selector to create jap.fields.Field, rules are applied to that field

Inherited from:
PolicySyntax
Source:
PolicySyntax.scala
extension [P](field: Field[P])
inline def sub[S](inline selector: P => S): Field[S]

Returns subfield using selector function to extract value and as path

Returns subfield using selector function to extract value and as path

Example

scala> val request = Request(User("ann"))
scala> val field = Field.from(request)
val field: jap.fields.Field[Request] = request:Request(User(ann))
scala> field.sub(_.user.name)
val res1: jap.fields.Field[String] = request.user.name:ann
Inherited from:
FieldSyntax
Source:
FieldSyntax.scala
extension (field: Field.type)
inline def from[V](inline value: V): Field[V]

Returns jap.fields.Field that has provided value and infers its jap.fields.FieldPath from field selects

Returns jap.fields.Field that has provided value and infers its jap.fields.FieldPath from field selects

Example:

scala> val request = Request(User("ann"))
val request: Request = Request(User(ann))
scala> val field = Field.from(request.user.name)
val field: jap.fields.Field[String] = request.user.name:ann
Inherited from:
FieldSyntax
Source:
FieldSyntax.scala
inline def sub[V](inline value: V): Field[V]

Similar to Field.from but drops first selector path

Similar to Field.from but drops first selector path

Example:

scala> val request = Request(User("ann"))
val request: Request = Request(User(ann))
scala> val field = Field.sub(request.user.name)
val field: jap.fields.Field[String] = user.name:ann
Inherited from:
FieldSyntax
Source:
FieldSyntax.scala

Implicits

Implicits

implicit val F: Effect[F]
implicit val V: Validated[V]

Inherited implicits

final implicit def toBooleanFieldOps(field: Field[Boolean]): BooleanFieldOps[F, V, E]
final implicit def toFieldOps[P](field: Field[P]): FieldOps[P, F, V, E]
final implicit def toIterableFieldOps[P, I <: (Iterable)](field: Field[I[P]]): IterableFieldOps[P, I, F, V, E]
final implicit def toMapFieldOps[K, P](field: Field[Map[K, P]]): MapFieldOps[K, P, F, V, E]
Inherited from:
ModuleMapSyntax
Source:
MapSyntax.scala
final implicit def toOptionFieldOps[P](field: Field[Option[P]]): OptionFieldOps[P, F, V, E]
final implicit def toOrderingFieldOps[P](field: Field[P]): OrderingFieldOps[P, F, V, E]
final implicit def toRuleSequenceOps[F[_], V[_], E](rules: Iterable[Rule[F, V, E]]): RuleSequenceOps[F, V, E]
Inherited from:
RuleSyntax
Source:
RuleSyntax.scala
final implicit def toRuleValidationOps[F[_], V[_], E](rule: Rule[F, V, E]): RuleValidationOps[F, V, E]
Inherited from:
RuleSyntax
Source:
RuleSyntax.scala
final implicit def toStringFieldOps(field: Field[String]): StringFieldOps[F, V, E]
final implicit def toValidatedIdOps[E](error: E): ValidatedIdOps[E]
final implicit def toValidatedOps[V[_], E](vr: V[E]): ValidatedOps[V, E]
final implicit def toValidatedSeqOps[V[_], E](iterable: Iterable[V[E]]): ValidatedSeqOps[V, E]