glerd_valid

Package VersionHex DocsErlang-compatibleJavaScript-compatible

Gleam Record validators using Glerd metadata

gleam add --dev glerd glerd_valid

1. Describe your records with validation metadata

Example:

pub type Cat {
  /// valid:name:length:'gte=3, lt=50'
  /// valid:lives_count:self:'min=1, max=9'
  Cat(name: String, lives_count: Int)
}

2. Generate Records info

Use Glerd

3. Make module for validators generation

my_module.gleam
import glerd_valid
import glerd_gen

pub fn main() {
  glerd_gen.record_info
  |> glerd_valid.generate("src", _)
}

4. Gen validators

gleam run -m my_module

Further documentation can be found at https://hexdocs.pm/glerd_valid.

Supported metadata

Operators

operator description
gte, min should be greater than or equal to
gt should be greater than
lte, max should be less than or equal to
lt should be less than
eq should be equal to
ne should not be equal to

Levels

level description
self check on Record field itself
length check on Record field length

Compatibility

operator level type
gte, min self Int
gte, min self Float
gte, min length String
gte, min length List

| | | gt | self | Int | | gt | self | Float | | gt | length | String | | gt | length | List | | | | lte, max | self | Int | | lte, max | self | Float | | lte, max | length | String | | lte, max | length | List | | | | lt | self | Int | | lt | self | Float | | lt | length | String | | lt | length | List | | | | eq | self | Int | | eq | self | Float | | eq | self | String | | eq | self | List | | eq | self | Bool | | eq | length | String | | eq | length | List | | | | ne | self | Int | | ne | self | Float | | ne | self | String | | ne | self | List | | ne | self | Bool | | ne | length | String | | ne | length | List |

Development

gleam test # and then commit generated file