gege251/elm-validator-pipeline/3.0.0

Renamed to szg251/elm-validator-pipeline. That is where the repository lives now. It has not been published as a package under the new name.

Versions published as gege251/elm-validator-pipeline still install under that name. 5 versions of 5 come from the new location (see their notes).

Rerouted (renamed, verified). The GitHub user or repository was renamed. The tag is still there, at the new name. The Lamdera package server serves a copy recovered from https://github.com/szg251/elm-validator-pipeline.

What we checked: The repo moved to github.com/szg251/elm-validator-pipeline. Rebuilt with git archive from commit e26fc5cdad20 of https://github.com/szg251/elm-validator-pipeline (zip prefix gege251-elm-validator-pipeline-e26fc5c/, America/Los_Angeles times): the zip is byte-identical to the one package.elm-lang.org recorded, SHA-1 c352f496f2a1dd5c400c91981e71e9b310e026b3.

The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.

Details · package.elm-lang.org's zip: https://github.com/gege251/elm-validator-pipeline/zipball/3.0.0/

Validator.Named

Named validators work exactly the same way, as the simple ones, but every validate function takes a name string. Errors will be accumulated into a Dict, where the key is the given name, and the value is a list of errors.

Ok ValidatedForm
    |> validate "name" (notEmpty "name is required") form.name
    |> validate "email" (isEmail "email is invalid") form.email
    |> validateMany "password"
        [ hasLetter "password needs to contain letters"
        , hasNumber "password needs to contain numbers"
        ]
        form.password
    |> noCheck form.message
    |> checkOnly "approved" (Bool.isTrue "you need to approve") form.approved

Pipeline functions

noCheck : a -> Validated x (a -> b) -> Validated x b

Pipe a value through without perfoming any checks.

validate : String -> Validator x a b -> a -> Validated x (b -> c) -> Validated x c

Validate a value using a validator.

checkOnly : String -> Validator x a b -> a -> Validated x c -> Validated x c

Validate a value without applying it to the pipe.

String
-> List (Validator x a a)
-> a
-> Validated x (a -> b)
-> Validated x b

Validate a value using a list of validators. Checks are performed from left to right, and will stop on the first failure, returning only the first error.

String
-> List (Validator x a a)
-> a
-> Validated x (a -> b)
-> Validated x b

Validate a value using a list of validators. Checks are performed from left to right, and will return all errors.

Errors

Named validators return lists of errors in a Dict, where the key is the field name. You don't even need to use these helpers to get errors for a field, you can simply use Dict.get NAME.

type alias Validated error value =
Result (Errors error) value

Validated is an alias for a Result type with Errors.

type alias Errors error =
Dict String (List error)

Named validators return lists of errors in a Dict, where the key is the field name.

hasErrorsOn : String -> Validated x a -> Bool

Checks if there are any errors for a given field name.

getErrors : String -> Validated x a -> Maybe (List x)

Get errors for a given field.

countErrors : Validated x a -> Int

Count all the errors.