etaque/elm-form/2.1.0

NOTE: this package is not compatible with Elm 0.19.1

Form.Validate

Form validation.

Combinators

type alias Validation customError output =
Field -> Result (Error customError) output

A validation is a function that takes a form field and returns a result being either a validation error or the expected object.

field : String -> Validation e a -> Validation e a

Access the given field in the group.

field "name" string
map : (a -> b) -> Validation e a -> Validation e b

Map over the result of the validation.

field "myfield" (string |> map String.trim)
succeed : a -> Validation e a

A validation that always succeeds. Useful for contextual validation.

andThen : (a -> Validation e b) -> Validation e a -> Validation e b

Apply a new validation to the result of the validation.

field "myfield" (int |> andThen (minInt 10))
andMap : Validation e a -> Validation e (a -> b) -> Validation e b

Incremental form validation for records with more that 8 fields.

Form.Validate.succeed SomeRecord
  |> andMap (field "foo" string)
  |> andMap (field "bar" string)
customError : e -> Error e

Helper to create a CustomError.

defaultValue : a -> Validation e a -> Validation e a

Rescue a failed validation with the supplied value.

mapError : (Error e1 -> Error e2) -> Validation e1 a -> Validation e2 a

Call Result.mapError on validation result.

withCustomError : customErr -> Validation e a -> Validation customErr a

Arrange that if a validation fails, it has the given custom error.

field "customerId" (V.int
      |> andThen (minInt 1)
      |> andThen (maxInt 9999)
      |> withCustomError InvalidIdentity)
sequence : List (Validation e a) -> Validation e (List a)

Combine a list of validations into a validation producing a list of all results.

Fixed-size forms

map2 : (a -> b -> m) -> Validation e a -> Validation e b -> Validation e m

Validation a form with two fields.

(a -> b -> c -> m)
-> Validation e a
-> Validation e b
-> Validation e c
-> Validation e m

Validation a form with three fields.

(a -> b -> c -> d -> m)
-> Validation e a
-> Validation e b
-> Validation e c
-> Validation e d
-> Validation e m

Validation a form with four fields.

(a -> b -> c -> d -> e -> m)
-> Validation err a
-> Validation err b
-> Validation err c
-> Validation err d
-> Validation err e
-> Validation err m

Validation a form with five fields.

(a -> b -> c -> d -> e -> f -> m)
-> Validation err a
-> Validation err b
-> Validation err c
-> Validation err d
-> Validation err e
-> Validation err f
-> Validation err m

Validation a form with six fields.

(a -> b -> c -> d -> e -> f -> g -> m)
-> Validation err a
-> Validation err b
-> Validation err c
-> Validation err d
-> Validation err e
-> Validation err f
-> Validation err g
-> Validation err m

Validation a form with seven fields.

(a -> b -> c -> d -> e -> f -> g -> h -> m)
-> Validation err a
-> Validation err b
-> Validation err c
-> Validation err d
-> Validation err e
-> Validation err f
-> Validation err g
-> Validation err h
-> Validation err m

Validation a form with eight fields.

Type extractors

list : Validation e a -> Validation e (List a)

Validate a list of fields.

string : Validation e String

Validation a String.

int : Validation e Int

Validation an integer using String.toInt.

float : Validation e Float

Validation a float using String.toFloat.

bool : Validation e Bool

Validation a Bool.

date : Validation e Date

Validation a Date using Date.fromString.

maybe : Validation e a -> Validation e (Maybe a)

Transform validation result to Maybe, using Result.toMaybe.

email : Validation e String

Check if the string is a valid email address.

url : Validation e String

Check if the string is a valid URL.

emptyString : Validation e String

Validate an empty string, otherwise failing with InvalidString. Useful with oneOf for optional fields with format validation.

Common filters

minInt : Int -> Int -> Validation e Int

Min value for Int.

maxInt : Int -> Int -> Validation e Int

Max value for Int.

minFloat : Float -> Float -> Validation e Float

Min value for Float.

maxFloat : Float -> Float -> Validation e Float

Max value for Float.

minLength : Int -> String -> Validation e String

Min length for String.

maxLength : Int -> String -> Validation e String

Max length for String.

nonEmpty : String -> Validation e String

Fails if String.isEmpty.

format : Regex -> String -> Validation e String

Validates format of the string.

includedIn : List String -> String -> Validation e String

Check if the string is included in the given list.

Custom validations

fail : Error e -> Validation e a

A validation that always fails. Useful for contextual validation.

succeed : a -> Validation e a

A validation that always succeeds. Useful for contextual validation.

customValidation : Validation e a -> (a -> Result (Error e) b) -> Validation e b

Custom validation for your special cases.

oneOf : List (Validation e a) -> Validation e a

First successful validation wins, from left to right.