gege251/elm-validator-pipeline/1.1.0

NOTE: the latest version is 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 eaa6a30c7a8c of https://github.com/szg251/elm-validator-pipeline (zip prefix gege251-elm-validator-pipeline-eaa6a30/, America/Los_Angeles times): the zip is byte-identical to the one package.elm-lang.org recorded, SHA-1 e84d0576ee89748b90f08a0169d42751bf679778.

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/1.1.0/

Validator.Named

Named validators work exactly the same way, as the simple ones, but every validate function takes a name string.

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

Errors will be accumulated from top to bottom into a Dict, where the key is the field name.

Pipeline functions

noCheck : a -> Result Errors (a -> b) -> Result Errors b

Pipe a value through without perfoming any checks.

validate : String -> Validator a b -> a -> Result Errors (b -> c) -> Result Errors c

Validate a value using a validator.

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

Validate a value without applying it to the pipe.

String
-> List (Validator a a)
-> a
-> Result Errors (a -> b)
-> Result Errors 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 a a)
-> a
-> Result Errors (a -> b)
-> Result Errors 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 FIELDNAME.

type alias Validated a =
Result Errors a

Validated is an alias for a Result type with Errors.

type alias Errors =
Dict String (List String)

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

hasErrorsOn : String -> Validated a -> Bool

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

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

Get errors for a given field.

countErrors : Validated a -> Int

Count all the errors.