Current section
Files
Jump to
Current section
Files
lib/types/string_type.ex
defmodule Talos.Types.StringType do
@moduledoc false
defstruct [:min_length, :length, :max_length, :regexp]
@behaviour Talos.Types
def valid?(
%__MODULE__{regexp: regexp, min_length: min_len, length: len, max_length: max_len},
value
) do
with true <- String.valid?(value),
str_len <- String.length(value),
true <- is_nil(min_len) || min_len <= str_len,
true <- is_nil(len) || len == str_len,
true <- is_nil(max_len) || str_len <= max_len,
true <- is_nil(regexp) || Regex.match?(regexp, value) do
true
else
false -> false
end
end
def errors(type, value) do
case valid?(type, value) do
true -> []
false -> ["#{inspect(value)} does not match type #{inspect(type)}"]
end
end
end