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://)