Current section
Files
Jump to
Current section
Files
src/kitazith@validation.erl
-module(kitazith@validation).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/kitazith/validation.gleam").
-export([message/1]).
-export_type([validation_error/0, validation_reason/0]).
-type validation_error() :: {validation_error, binary(), validation_reason()}.
-type validation_reason() :: {string_length_out_of_range,
integer(),
integer(),
integer()} |
{string_length_exceeded, integer(), integer()} |
{list_length_exceeded, integer(), integer(), binary()} |
{aggregate_character_limit_exceeded, binary(), integer(), integer()} |
{aggregate_component_limit_exceeded, integer(), integer()} |
{component_count_out_of_range, integer(), integer(), integer(), binary()} |
{numeric_maximum_exceeded, integer(), integer(), binary()} |
{numeric_out_of_range, integer(), integer(), integer(), binary()} |
{missing_attachment_reference, binary()} |
attachment_reference_missing_filename |
attachment_reference_required |
{duplicate_attachment_filename, binary(), list(integer())} |
{duplicate_component_id, integer(), list(binary())} |
{mutually_exclusive_with, binary()} |
{requires_flag, binary()}.
-file("src/kitazith/validation.gleam", 29).
-spec message(validation_error()) -> binary().
message(Error) ->
case erlang:element(3, Error) of
{string_length_out_of_range, Min, Max, _} ->
<<<<<<<<"must be between "/utf8,
(erlang:integer_to_binary(Min))/binary>>/binary,
" and "/utf8>>/binary,
(erlang:integer_to_binary(Max))/binary>>/binary,
" characters"/utf8>>;
{string_length_exceeded, Max@1, _} ->
<<<<"must be at most "/utf8,
(erlang:integer_to_binary(Max@1))/binary>>/binary,
" characters"/utf8>>;
{list_length_exceeded, Max@2, _, Item_label} ->
<<<<<<"must contain at most "/utf8,
(erlang:integer_to_binary(Max@2))/binary>>/binary,
" "/utf8>>/binary,
Item_label/binary>>;
{aggregate_character_limit_exceeded, Limit_label, Max@3, _} ->
case Limit_label of
<<"embed_total_characters"/utf8>> ->
<<<<"must contain at most "/utf8,
(erlang:integer_to_binary(Max@3))/binary>>/binary,
" total characters across titles, descriptions, field names, field values, footer texts, and author names"/utf8>>;
_ ->
<<<<<<"must be at most "/utf8,
(erlang:integer_to_binary(Max@3))/binary>>/binary,
" for "/utf8>>/binary,
Limit_label/binary>>
end;
{aggregate_component_limit_exceeded, Max@4, _} ->
<<<<"must contain at most "/utf8,
(erlang:integer_to_binary(Max@4))/binary>>/binary,
" total components"/utf8>>;
{component_count_out_of_range, Min@1, Max@5, _, Item_label@1} ->
<<<<<<<<<<"must contain between "/utf8,
(erlang:integer_to_binary(Min@1))/binary>>/binary,
" and "/utf8>>/binary,
(erlang:integer_to_binary(Max@5))/binary>>/binary,
" "/utf8>>/binary,
Item_label@1/binary>>;
{numeric_maximum_exceeded, Max@6, _, Unit} ->
<<<<<<"must be at most "/utf8,
(erlang:integer_to_binary(Max@6))/binary>>/binary,
" "/utf8>>/binary,
Unit/binary>>;
{numeric_out_of_range, Min@2, Max@7, _, Unit@1} ->
<<<<<<<<<<"must be between "/utf8,
(erlang:integer_to_binary(Min@2))/binary>>/binary,
" and "/utf8>>/binary,
(erlang:integer_to_binary(Max@7))/binary>>/binary,
" "/utf8>>/binary,
Unit@1/binary>>;
{missing_attachment_reference, Filename} ->
<<<<"references attachment `"/utf8, Filename/binary>>/binary,
"` that is not present in attachments"/utf8>>;
attachment_reference_missing_filename ->
<<"must include a filename after `attachment://`"/utf8>>;
attachment_reference_required ->
<<"must use an `attachment://<filename>` reference"/utf8>>;
{duplicate_attachment_filename, Filename@1, Indexes} ->
<<<<<<"contains duplicate attachment filename `"/utf8,
Filename@1/binary>>/binary,
"` at indexes "/utf8>>/binary,
(begin
_pipe = Indexes,
_pipe@1 = gleam@list:map(
_pipe,
fun erlang:integer_to_binary/1
),
gleam@string:join(_pipe@1, <<", "/utf8>>)
end)/binary>>;
{duplicate_component_id, Id, Paths} ->
<<<<<<"contains duplicate component id `"/utf8,
(erlang:integer_to_binary(Id))/binary>>/binary,
"` at paths "/utf8>>/binary,
(gleam@string:join(Paths, <<", "/utf8>>))/binary>>;
{mutually_exclusive_with, Other_path} ->
<<<<"must not be used together with `"/utf8, Other_path/binary>>/binary,
"`"/utf8>>;
{requires_flag, Flag_name} ->
<<<<"requires the `"/utf8, Flag_name/binary>>/binary,
"` flag"/utf8>>
end.