[
    {
        "name": "Validators",
        "comment": " This library provides a few functions for validating data.\n\n\n# Numbers validation\n\n@docs isFloat, isPositiveFloat, isInt, isPositiveInt\n\n\n# Strings validation\n\n@docs isNotEmpty, isEmail, isUrl\n\n\n# List validation\n\n@docs isInList\n\n\n# Others validation\n\n@docs isTrue, isEqualTo, isValidField\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "isEmail",
                "comment": " Return an `Err errorMessage` if the given string isn't correct an email address,\notherwise return `Ok value`.\n",
                "type": "ErrorMessage -> Validator String String"
            },
            {
                "name": "isEqualTo",
                "comment": " Validate Field\n\nReturn an `Err errorMessage` if the given value of `Field Valid a` isn't same as\nvalidation argument, otherwise return `Ok validation argument` for others `Validity`\nor for `Valid a` is `Ok value`.\n\n    import Validation exposing (Validator, ErrorMessage, Field)\n\n    pass : Field String String\n    pass =\n        Field \"\" (Valid \"password*\")\n\n    confirmPasswordValidation : Validator String String\n    confirmPasswordValidation =\n        isEqualTo pass \"The passwords don't match.\"\n\n    confirmPasswordValidation \"password*\" -- Ok password*\n    confirmPasswordValidation \"pasword*\"  -- Err \"The passwords don't match.\"\n\n",
                "type": "Field raw a -> ErrorMessage -> Validator a a"
            },
            {
                "name": "isFloat",
                "comment": " Return an `Err errorMessage` if the given value isn't float number, otherwise\nreturn `Ok value`.\n\n    import Validation exposing (Validator, ErrorMessage)\n\n    floatValidation : Validator String Float\n    floatValidation =\n        isFloat \"It is not float number!\"\n\n    floatValidation \"5.39161\" -- Ok 5.39161\n    floatValidation \"t.39161\" -- Err \"It is not float number!\"\n\n",
                "type": "ErrorMessage -> Validator String Float"
            },
            {
                "name": "isInList",
                "comment": " Return an `Err errorMessage` if the given value isn't in list, otherwise\nreturn `Ok value`.\n\n    import Validation exposing (Validator, ErrorMessage)\n\n    elInListValidation : Validator (Int, List Int) Int\n    elInListValidation =\n        isInList \"Given value is not in list!\"\n\n    elInListValidation (3, [1, 2, 3]) -- Ok 3\n    elInListValidation (5, [1, 2, 3]) -- Err \"Given value is not in list!\"\n\n",
                "type": "ErrorMessage -> Validator ( a, List a ) a"
            },
            {
                "name": "isInt",
                "comment": " Return an `Err errorMessage` if the given value isn't int number, otherwise\nreturn `Ok value`.\n\n    import Validation exposing (Validator, ErrorMessage)\n\n    intValidation : Validator String Int\n    intValidation =\n        isInt \"It is not int number!\"\n\n    intValidation \"108\" -- Ok 108\n    intValidation \"3.14\" -- Err \"It is not int number!\"\n\n",
                "type": "ErrorMessage -> Validator String Int"
            },
            {
                "name": "isNotEmpty",
                "comment": " Return an `Err errorMessage` if the given string is empty, otherwise\nreturn `Ok value`.\n",
                "type": "ErrorMessage -> Validator String String"
            },
            {
                "name": "isPositiveFloat",
                "comment": " Return an `Err errorMessage` if the given value isn't positive float number,\notherwise return `Ok value`. It contains also float validation of value.\n",
                "type": "ErrorMessage -> Validator String Float"
            },
            {
                "name": "isPositiveInt",
                "comment": " Return an `Err errorMessage` if the given value isn't positive int number,\notherwise return `Ok value`. It contains also int validation of value.\n",
                "type": "ErrorMessage -> Validator String Int"
            },
            {
                "name": "isTrue",
                "comment": " Return an `Err errorMessage` if the given boolean value is false, otherwise\nreturn `Ok True`.\n",
                "type": "ErrorMessage -> Validator Bool Bool"
            },
            {
                "name": "isUrl",
                "comment": " Return an `Err errorMessage` if the given string isn't correct an url path,\notherwise return `Ok value`.\n",
                "type": "ErrorMessage -> Validator String String"
            },
            {
                "name": "isValidField",
                "comment": " Return false if `Field` hasn't validity `Valid a`, otherwise\nreturn true.\n\n    import Validation exposing (Field, field, preValidatedField)\n\n    intNotvalidValue = field \"50\"        -- Field \"50\" NotValidated\n    intValidValue = preValidatedField 50 -- Field \"50\" (Valid 50)\n\n    isValidField intNotvalidValue -- False\n    isValidField intValidValue    -- True\n\n",
                "type": "Field raw a -> Bool"
            }
        ],
        "binops": []
    },
    {
        "name": "Validation",
        "comment": " This library helps with validation of input forms.\n\n\n# Definition\n\n@docs Field, Validity, Event, SubmissionStatus, OptionalField, Validator, ErrorMessage\n\n\n# Helpers\n\n@docs extractError, field, preValidatedField, validate, validity, rawValue, optional\n\n\n# Higher-Order Helpers\n\n@docs (|:), (>&&)\n\n",
        "unions": [
            {
                "name": "Event",
                "comment": " Event describe state of input form:\n* `OnSubmit` validates model data before submitting to server,\nsee `validateModel` in `example`.\n* `OnBlur` validates input form when user leaves an input field.\n* `OnRelatedChange` validates input form which is tied with another form.\nFor example: password and confirm form.\n* `OnChange raw` validates input form when user changes value in input field,\n",
                "args": [
                    "raw"
                ],
                "cases": [
                    [
                        "OnSubmit",
                        []
                    ],
                    [
                        "OnBlur",
                        []
                    ],
                    [
                        "OnRelatedChange",
                        []
                    ],
                    [
                        "OnChange",
                        [
                            "raw"
                        ]
                    ]
                ]
            },
            {
                "name": "Field",
                "comment": " Define data type.\nFor example:\n\n    dist =\n        Field 40.5 NotValidated\n\nThat means `dist` has value 40.5 which hasn't validated yet.\n\n",
                "args": [
                    "raw",
                    "a"
                ],
                "cases": []
            },
            {
                "name": "SubmissionStatus",
                "comment": " Here `SubmissionStatus` define states for submit data to server:\n* `NotSubmitted` means that data have not sent yet.\n* `InProcess` for data being processed.\n* `Succeeded` if data have been successfully received.\n* `Failed` or vice versa, data have not been successfully received.\n\n    This also may be used to inform user on screen, see `renderStatus`in `example`.\n\n",
                "args": [],
                "cases": [
                    [
                        "NotSubmitted",
                        []
                    ],
                    [
                        "InProcess",
                        []
                    ],
                    [
                        "Succeeded",
                        []
                    ],
                    [
                        "Failed",
                        []
                    ]
                ]
            },
            {
                "name": "Validity",
                "comment": " This type defines three state of Field:\n* `NotValidated` values e.g. in input from, which have not validated yet.\n* `Valid a` values that they are correct.\n* `Invalid String` and state for incorrect input values.\n",
                "args": [
                    "a"
                ],
                "cases": [
                    [
                        "NotValidated",
                        []
                    ],
                    [
                        "Valid",
                        [
                            "a"
                        ]
                    ],
                    [
                        "Invalid",
                        [
                            "String"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "ErrorMessage",
                "comment": " Represents error message for invalid values in input form.\nThis type is used for definition of validator functions.\n",
                "args": [],
                "type": "String"
            },
            {
                "name": "OptionalField",
                "comment": " Sometimes we want to use input form as optional, for example age.\nIn this case the input field can be an empty. But if somebody provides\ninput value then input field will be validated. So this type is used\nfor define optional variable.\n",
                "args": [
                    "raw",
                    "a"
                ],
                "type": "Field raw (Maybe a)"
            },
            {
                "name": "Validator",
                "comment": " It's used for validate variables, see `Validators` for example.\n",
                "args": [
                    "a",
                    "b"
                ],
                "type": "a -> Result String b"
            }
        ],
        "values": [
            {
                "name": "extractError",
                "comment": " Extract error message from Field.\n\n    import Validaton exposing (Field)\n\n    errorLabel : Field raw a -> Html Msg\n    errorLabel field =\n        div []\n            [ field\n                |> extractError\n                |> Maybe.withDefault \"\"\n                |> text\n            ]\n\n",
                "type": "Field raw a -> Maybe String"
            },
            {
                "name": "field",
                "comment": " Default setting of Field with `NotValidated` validity.\n\n    import Validation exposing (Field, field)\n\n    intValue : Field String String\n    intValue =\n        field \"50\"\n\n\n    -- Field \"50\" NotValidated\n\n",
                "type": "b -> Field b a"
            },
            {
                "name": "optional",
                "comment": " Validation of optional variable.\n\n    import Validaton exposing (Event(..), OptionalField, field, validate)\n    import Validators exposing (isPositiveInt)\n\n    age : OptionalField String Int\n    age =\n        field \"\"\n\n    validate\n        OnSubmit\n        (optional (isPositiveInt \"The age has to be positive number.\"))\n        age\n\n    -- Field \"\" (Valid Nothing)\n\n",
                "type": "Validator String a -> Validator String (Maybe a)"
            },
            {
                "name": "preValidatedField",
                "comment": " Default setting of Field with `Valid a` validity.\n\n    import Validation exposing (Field, field)\n\n    intValue : Field String Int\n    intValue =\n        preValidatedField \"50\"\n\n\n    -- Field \"50\" (Valid 50)\n\n",
                "type": "val -> Field String val"
            },
            {
                "name": "rawValue",
                "comment": " Get value from Field.\n\n    import Validation exposing (Field)\n\n    intValue : Field String String\n    intValue =\n        Field \"50\" NotValidated\n\n    rawValue intValue       -- \"50\"\n\n",
                "type": "Field b a -> b"
            },
            {
                "name": "validate",
                "comment": " Run validation on Field with `Event`.\n",
                "type": "Event raw -> Validator raw a -> Field raw a -> Field raw a"
            },
            {
                "name": "validity",
                "comment": " Get validity from Field.\n\n    import Validation exposing (Field)\n\n    intValue : Field String Int\n    intValue =\n        Field \"50\" (Valid 50)\n\n    validity intValue       -- Valid 50\n\n",
                "type": "Field raw a -> Validity a"
            }
        ],
        "binops": [
            {
                "name": ">&&",
                "comment": " Composition of two Validators.\n\n    import Validators exposing (isNotEmpty, isEmail)\n\n    emailValidation : Validator String String\n    emailValidation =\n        isNotEmpty \"An email is required.\"\n            >&& isEmail \"Please ensure this is a valid email.\"\n\n",
                "type": "Validator a b -> Validator b c -> Validator a c",
                "associativity": "left",
                "precedence": 9
            },
            {
                "name": "|:",
                "comment": " Applying function to particular validation. For instance, see `submitIfValid` and\n`submit` function in `example`.\n",
                "type": "Validity (a -> b) -> Validity a -> Validity b",
                "associativity": "left",
                "precedence": 9
            }
        ]
    }
]