getto-systems / elm-field / Getto.Field.Validate

edit field utilities - validation

name_ = Form.prop .name (\v m -> { m | name = v })

model =
  { name = "name" |> Validate.init signature ""
  }

blank = Validate.blank "blank"

view a =
  { name = a
  }

Validate.compose view
  ( model |> ( name_ |> Validate.single [ model.name |> blank ] ) )
{-
  { hasError = True
  , form =
    { name =
      ( "name"
      , { field = model.name
        , prop  = name_
        }
      , { errors = [ "blank" ] -- model.name |> blank
        }
      )
    }
  }
-}

Definition


type alias View model =
{ hasError : Basics.Bool, form : model }

models and that has error


type alias Model form opts =
( String
, form
, { opts | errors : List String } 
)

field name, form and errors


type alias Single form opts a =
Model (Getto.Field.Form.Model form Attribute a) opts

single form model


type alias Field a =
Getto.Field.Model Attribute a

no-attribute field


type alias Prop form a =
Getto.Field.Form.Prop form Attribute a

Prop for no-attribute field


type alias Validater attr a =
Getto.Field.Model attr a -> Maybe String

validate method

Construction

init : String -> value -> String -> Field value

construct Field

"name" |> Validate.init signature ""

single : List (Maybe String) -> Getto.Field.Form.Prop form attr a -> form -> Model (Getto.Field.Form.Model form attr a) {}

construct Single

form |> ( name_ |> Validate.single [ form.name |> Validate.blank "blank" ] )

Validaters

nothing : String -> Validater attr (Maybe value)

error if Nothing

blank : String -> Validater attr String

error if empty string

emptySet : String -> Validater attr (Set a)

error if empty set

emptyList : String -> Validater attr (List a)

error if empty list

notInt : String -> Validater attr String

error if string is not int

validate : String -> (a -> Basics.Bool) -> Getto.Field.Model attr a -> Maybe String

error if validation failed

Helper

compose : (Model a opts -> model) -> Model a opts -> View model

compose models

type alias Form =
  { name = Validate.Field String
  }

type alias Model =
  { name = Validate.Single Form {} String
  }

name_ = Form.prop .name (\v m -> { m | name = v })

Validate.compose Model
  ( form |> ( name_ |> Validate.single [ form.name |> Validate.blank "blank" ] ) )

compose2 : (Model a opts -> Model b opts -> model) -> Model a opts -> Model b opts -> View model

compose models with 2 args

Validate.compose Model
  ( form |> ( name_ |> Validate.single [ form.name |> Validate.blank "blank" ] ) )
  ( form |> ( age_  |> Validate.single [] ) )

compose3 : (Model a opts -> Model b opts -> Model c opts -> model) -> Model a opts -> Model b opts -> Model c opts -> View model

compose models with 3 args

compose4 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> View model

compose models with 4 args

compose5 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> View model

compose models with 5 args

compose6 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> View model

compose models with 6 args

compose7 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> View model

compose models with 7 args

compose8 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> View model

compose models with 8 args

compose9 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> View model

compose models with 9 args

compose10 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> View model

compose models with 10 args

compose11 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> View model

compose models with 11 args

compose12 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> View model

compose models with 12 args

compose13 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> View model

compose models with 13 args

compose14 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> View model

compose models with 14 args

compose15 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> View model

compose models with 15 args

compose16 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> Model p opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> Model p opts -> View model

compose models with 16 args