Current section
Files
Jump to
Current section
Files
src/okay.erl
-module(okay).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([run/1, new/0, field/3, is_included_in/2, is_longer/2, is_equal/2, is_gt/2, is_gte/2, is_lt/2, is_lte/2, is_true/1, is_false/1, is_some/1, is_none/1]).
-export_type([error/0, validation_error/0, okay/0]).
-type error() :: {is_greater, integer(), integer()} |
{is_greater_or_equal, integer(), integer()} |
{is_longer, binary(), integer(), integer()} |
{is_lesser, integer(), integer()} |
{is_lesser_or_equal, integer(), integer()} |
{is_equal, binary(), binary()} |
{is_included_in, binary(), binary()} |
{is_bool, boolean(), boolean()} |
is_some |
{is_none, binary()}.
-type validation_error() :: {validation_error, binary(), error()}.
-type okay() :: {okay, list(validation_error())}.
-file("/Users/gogo/Development/guard/src/okay.gleam", 31).
-spec run(okay()) -> {ok, nil} | {error, okay()}.
run(Okay) ->
case gleam@list:is_empty(erlang:element(2, Okay)) of
true ->
{ok, nil};
false ->
{error, Okay}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 39).
-spec new() -> okay().
new() ->
{okay, []}.
-file("/Users/gogo/Development/guard/src/okay.gleam", 44).
-spec field(okay(), binary(), {ok, nil} | {error, error()}) -> okay().
field(Okay, Field, Result) ->
case Result of
{error, Error} ->
Updated_errors = lists:append(
erlang:element(2, Okay),
[{validation_error, Field, Error}]
),
{okay, Updated_errors};
_ ->
Okay
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 63).
-spec is_included_in(FDA, list(FDA)) -> {ok, nil} | {error, error()}.
is_included_in(Value, Whitelist) ->
case gleam@list:contains(Whitelist, Value) of
true ->
{ok, nil};
false ->
{error,
{is_included_in,
gleam@string:inspect(Value),
gleam@string:inspect(Whitelist)}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 78).
-spec is_longer(binary(), integer()) -> {ok, nil} | {error, error()}.
is_longer(Value, Length) ->
Value_length = string:length(Value),
case Value_length > Length of
true ->
{ok, nil};
false ->
{error, {is_longer, Value, Value_length, Length}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 93).
-spec is_equal(FDG, FDG) -> {ok, nil} | {error, error()}.
is_equal(Value, Compare) ->
case Value =:= Compare of
true ->
{ok, nil};
false ->
{error,
{is_equal,
gleam@string:inspect(Value),
gleam@string:inspect(Compare)}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 107).
-spec is_gt(integer(), integer()) -> {ok, nil} | {error, error()}.
is_gt(Value, Compare) ->
case Value > Compare of
true ->
{ok, nil};
false ->
{error, {is_greater, Value, Compare}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 121).
-spec is_gte(integer(), integer()) -> {ok, nil} | {error, error()}.
is_gte(Value, Compare) ->
case Value >= Compare of
true ->
{ok, nil};
false ->
{error, {is_greater_or_equal, Value, Compare}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 135).
-spec is_lt(integer(), integer()) -> {ok, nil} | {error, error()}.
is_lt(Value, Compare) ->
case Value < Compare of
true ->
{ok, nil};
false ->
{error, {is_lesser, Value, Compare}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 149).
-spec is_lte(integer(), integer()) -> {ok, nil} | {error, error()}.
is_lte(Value, Compare) ->
case Value =< Compare of
true ->
{ok, nil};
false ->
{error, {is_lesser_or_equal, Value, Compare}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 163).
-spec is_true(boolean()) -> {ok, nil} | {error, error()}.
is_true(Value) ->
case Value =:= true of
true ->
{ok, nil};
false ->
{error, {is_bool, Value, true}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 177).
-spec is_false(boolean()) -> {ok, nil} | {error, error()}.
is_false(Value) ->
case Value =:= false of
true ->
{ok, nil};
false ->
{error, {is_bool, Value, false}}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 191).
-spec is_some(gleam@option:option(any())) -> {ok, nil} | {error, error()}.
is_some(Value) ->
case Value of
{some, _} ->
{ok, nil};
none ->
{error, is_some}
end.
-file("/Users/gogo/Development/guard/src/okay.gleam", 205).
-spec is_none(gleam@option:option(any())) -> {ok, nil} | {error, error()}.
is_none(Value) ->
case Value of
none ->
{ok, nil};
{some, X} ->
{error, {is_none, gleam@string:inspect(X)}}
end.