Current section

Files

Jump to
funx lib validator email.ex
Raw

lib/validator/email.ex

defmodule Funx.Validator.Email do
@moduledoc """
Validates that a string is a valid email format.
## Basic Check
This is a simple email validator that checks for the presence of an `@` symbol.
For more robust email validation, use a dedicated library or custom validator.
## Optional Options
- `:message` - Custom error message callback `(value -> String.t())`
## Examples
iex> Funx.Validator.Email.validate("user@example.com")
%Funx.Monad.Either.Right{right: "user@example.com"}
iex> Funx.Validator.Email.validate("not-an-email")
%Funx.Monad.Either.Left{left: %Funx.Errors.ValidationError{errors: ["must be a valid email"]}}
"""
use Funx.Validator
@impl Funx.Validator
def valid?(string, _opts, _env) when is_binary(string) do
String.contains?(string, "@")
end
def valid?(_non_string, _opts, _env), do: false
@impl Funx.Validator
def default_message(value, _opts) when is_binary(value) do
"must be a valid email"
end
def default_message(_value, _opts) do
"must be a string"
end
end