sift/string

String validators — length, pattern matching, format checks (email, url, uuid).

Values

pub fn contains(
  substring: String,
  msg: String,
) -> fn(String) -> Result(String, String)

String must contain the given substring

pub fn email(msg: String) -> fn(String) -> Result(String, String)

Must look like an email (contains exactly one @, something before and after).

let validator = string.email("invalid email")
validator("jo@example.com")  // -> Ok("jo@example.com")
validator("nope")            // -> Error("invalid email")
pub fn ends_with(
  suffix: String,
  msg: String,
) -> fn(String) -> Result(String, String)

String must end with the given suffix

pub fn length(
  n: Int,
  msg: String,
) -> fn(String) -> Result(String, String)

String must have exactly n graphemes

pub fn matches(
  pattern: String,
  msg: String,
) -> fn(String) -> Result(String, String)

String must match the given regex pattern

pub fn max_length(
  n: Int,
  msg: String,
) -> fn(String) -> Result(String, String)

String must have at most n graphemes

pub fn min_length(
  n: Int,
  msg: String,
) -> fn(String) -> Result(String, String)

String must have at least n graphemes

pub fn non_empty(
  msg: String,
) -> fn(String) -> Result(String, String)

String must not be empty (shorthand for min_length(1))

pub fn one_of(
  values: List(String),
  msg: String,
) -> fn(String) -> Result(String, String)

String must be one of the given values

pub fn starts_with(
  prefix: String,
  msg: String,
) -> fn(String) -> Result(String, String)

String must start with the given prefix

pub fn url(msg: String) -> fn(String) -> Result(String, String)

Must look like a URL (http:// or https://)

pub fn uuid(msg: String) -> fn(String) -> Result(String, String)

Must be a valid UUID v4 format

Search Document