getto-systems/elm-field/1.0.0

NOTE: the latest version is 2.0.0

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 : 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 (Model form Attribute a) opts

single form model

type alias Field a =
Model Attribute a

no-attribute field

type alias Prop form a =
Prop form Attribute a

Prop for no-attribute field

type alias Validater attr a =
Model attr a -> Maybe String

validate method

Construction

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

construct Field

"name" |> Validate.init signature ""
List (Maybe String)
-> Prop form attr a
-> form
-> Model (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 -> Bool) -> 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" ] ) )
(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 [] ) )
(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

(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

( 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

( 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

( 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

( 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

( 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

( 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

( 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

( 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

( 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

( 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

( 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

( 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