-module(valguard@validate). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/valguard/validate.gleam"). -export([int_required/2, int_min/3, int_max/3, float_required/2, float_min/3, float_max/3, string_required/2, string_min/3, string_max/3, string_length/3, string_starts_with/3, string_ends_with/3, string_contains/3, uuid_v1/2, uuid_v2/2, uuid_v3/2, uuid_v4/2, uuid_v5/2, uuid_v7/2, date_is_valid/2, email_is_valid/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -file("src/valguard/validate.gleam", 14). ?DOC(" Requires a int to be less than or greater than 0 to be considered required\n"). -spec int_required(integer(), binary()) -> {ok, nil} | {error, binary()}. int_required(Value, Message) -> case Value /= 0 of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 22). ?DOC(" Validates an int is at least a minimum value. Returns an error if value is less than the minimum\n"). -spec int_min(integer(), integer(), binary()) -> {ok, nil} | {error, binary()}. int_min(Value, Minimum, Message) -> case Value < Minimum of true -> {error, Message}; false -> {ok, nil} end. -file("src/valguard/validate.gleam", 34). ?DOC(" Validates an int is at most a maximum value. Returns an error if value is greater than the maximum\n"). -spec int_max(integer(), integer(), binary()) -> {ok, nil} | {error, binary()}. int_max(Value, Maximum, Message) -> case Value > Maximum of true -> {error, Message}; false -> {ok, nil} end. -file("src/valguard/validate.gleam", 46). ?DOC(" Requires a float to be less than or greater than 0.0 to be considered required\n"). -spec float_required(float(), binary()) -> {ok, nil} | {error, binary()}. float_required(Value, Message) -> case (Value > +0.0) orelse (Value < +0.0) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 57). ?DOC(" Validates a float is at least a minimum value. Returns an error if value is less than the minimum\n"). -spec float_min(float(), float(), binary()) -> {ok, nil} | {error, binary()}. float_min(Value, Minimum, Message) -> case Value < Minimum of true -> {error, Message}; false -> {ok, nil} end. -file("src/valguard/validate.gleam", 69). ?DOC(" Validates a float is at most a maximum value. Returns an error if value is greater than the maximum\n"). -spec float_max(float(), float(), binary()) -> {ok, nil} | {error, binary()}. float_max(Value, Maximum, Message) -> case Value > Maximum of true -> {error, Message}; false -> {ok, nil} end. -file("src/valguard/validate.gleam", 81). ?DOC(" Requires a string to not be empty to be considered required\n"). -spec string_required(binary(), binary()) -> {ok, nil} | {error, binary()}. string_required(Value, Message) -> case gleam@string:is_empty(Value) of false -> {ok, nil}; true -> {error, Message} end. -file("src/valguard/validate.gleam", 92). ?DOC(" Validates a string is a minimum length\n"). -spec string_min(binary(), integer(), binary()) -> {ok, nil} | {error, binary()}. string_min(Value, Minimum, Message) -> case string:length(Value) < Minimum of true -> {error, Message}; false -> {ok, nil} end. -file("src/valguard/validate.gleam", 104). ?DOC(" Validates a string is at most a maximum length\n"). -spec string_max(binary(), integer(), binary()) -> {ok, nil} | {error, binary()}. string_max(Value, Maximum, Message) -> case string:length(Value) > Maximum of true -> {error, Message}; false -> {ok, nil} end. -file("src/valguard/validate.gleam", 116). ?DOC(" Validates a string is a defined length\n"). -spec string_length(binary(), integer(), binary()) -> {ok, nil} | {error, binary()}. string_length(Value, Len, Message) -> case string:length(Value) =:= Len of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 128). ?DOC(" Validates a string starts with a value\n"). -spec string_starts_with(binary(), binary(), binary()) -> {ok, nil} | {error, binary()}. string_starts_with(Value, With, Message) -> case gleam_stdlib:string_starts_with(Value, With) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 140). ?DOC(" Validates a string ends with a value\n"). -spec string_ends_with(binary(), binary(), binary()) -> {ok, nil} | {error, binary()}. string_ends_with(Value, With, Message) -> case gleam_stdlib:string_ends_with(Value, With) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 152). ?DOC(" Validates a string contains a value\n"). -spec string_contains(binary(), binary(), binary()) -> {ok, nil} | {error, binary()}. string_contains(Value, Contains, Message) -> case gleam_stdlib:contains_string(Value, Contains) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 164). ?DOC(" Validates a string is a valid UUID V1\n"). -spec uuid_v1(binary(), binary()) -> {ok, nil} | {error, binary()}. uuid_v1(Value, Message) -> case valguard@internal@utils:check_uuid_version(Value, v1) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 172). ?DOC(" Validates a string is a valid UUID V2\n"). -spec uuid_v2(binary(), binary()) -> {ok, nil} | {error, binary()}. uuid_v2(Value, Message) -> case valguard@internal@utils:check_uuid_version(Value, v2) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 180). ?DOC(" Validates a string is a valid UUID V3\n"). -spec uuid_v3(binary(), binary()) -> {ok, nil} | {error, binary()}. uuid_v3(Value, Message) -> case valguard@internal@utils:check_uuid_version(Value, v3) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 188). ?DOC(" Validates a string is a valid UUID V4\n"). -spec uuid_v4(binary(), binary()) -> {ok, nil} | {error, binary()}. uuid_v4(Value, Message) -> case valguard@internal@utils:check_uuid_version(Value, v4) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 196). ?DOC(" Validates a string is a valid UUID V5\n"). -spec uuid_v5(binary(), binary()) -> {ok, nil} | {error, binary()}. uuid_v5(Value, Message) -> case valguard@internal@utils:check_uuid_version(Value, v5) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 204). ?DOC(" Validates a string is a valid UUID V7\n"). -spec uuid_v7(binary(), binary()) -> {ok, nil} | {error, binary()}. uuid_v7(Value, Message) -> case valguard@internal@utils:check_uuid_version(Value, v7) of true -> {ok, nil}; false -> {error, Message} end. -file("src/valguard/validate.gleam", 228). ?DOC(" Validates that a date is valid by checking it can be parsed correctly\n"). -spec date_is_valid(binary(), binary()) -> {ok, nil} | {error, binary()}. date_is_valid(Datetime, Message) -> case gleam@time@timestamp:parse_rfc3339(Datetime) of {ok, _} -> {ok, nil}; {error, _} -> {error, Message} end. -file("src/valguard/validate.gleam", 212). ?DOC(" Validates if entered email is a valid email address\n"). -spec email_is_valid(binary(), binary()) -> {ok, nil} | {error, binary()}. email_is_valid(Email, Message) -> gleam@result:'try'( begin _pipe = gleam@regexp:from_string( <<"^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"/utf8>> ), gleam@result:replace_error(_pipe, Message) end, fun(Re) -> case gleam@regexp:check(Re, Email) of false -> {error, Message}; true -> {ok, nil} end end ).