-module(glerd_valid). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([generate/2]). -spec generate( binary(), list({binary(), binary(), list({binary(), glerd@types:field_type()}), binary()}) ) -> nil. generate(Root, Record_info) -> Imports = begin _pipe = Record_info, _pipe@1 = gleam@list:map( _pipe, fun(Ri) -> {_, Module_name, _, _} = Ri, <<"import "/utf8, Module_name/binary>> end ), _pipe@2 = gleam@list:unique(_pipe@1), gleam@string:join(_pipe@2, <<"\n"/utf8>>) end, Gen_content = gleam@list:fold( Record_info, <<"// this file was generated via glerd_valid import gleam/bool import gleam/string import gleam/list "/utf8, Imports/binary>>, fun(Acc, Rinfo) -> {Record_name, Module_name@1, Fields, Meta} = Rinfo, _assert_subject = begin _pipe@3 = <<"valid:(\\w+):(\\w+):'([^']+)'"/utf8>>, gleam@regex:from_string(_pipe@3) end, {ok, Re} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail, module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 32}) end, Validations = gleam@regex:scan(Re, Meta), Field_type_by_name = begin _pipe@4 = Fields, gleam@list:fold( _pipe@4, gleam@dict:new(), fun(Acc@1, Field) -> {Field_name, Typ} = Field, gleam@dict:insert(Acc@1, Field_name, Typ) end ) end, Validation_body = <<(begin _pipe@12 = (gleam@list:flat_map( Validations, fun(Validation) -> {match, _, [{some, Field_name@1}, {some, Check_level}, {some, Rules}]} = case Validation of {match, _, [{some, _}, {some, _}, {some, _}]} -> Validation; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@1, module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 45}) end, Rules@1 = begin _pipe@5 = Rules, _pipe@6 = gleam@string:replace( _pipe@5, <<",,"/utf8>>, <<"zqLFwXhSaN3MtHvpYbE6xA2UfmjW9PRduT7ksrZB5G4c8yQDJe"/utf8>> ), gleam@string:split(_pipe@6, <<","/utf8>>) end, gleam@list:flat_map( Rules@1, fun(Rule) -> Rule@1 = begin _pipe@7 = Rule, gleam@string:replace( _pipe@7, <<"zqLFwXhSaN3MtHvpYbE6xA2UfmjW9PRduT7ksrZB5G4c8yQDJe"/utf8>>, <<","/utf8>> ) end, _assert_subject@1 = begin _pipe@8 = <<"(\\w+)=(.+)"/utf8>>, gleam@regex:from_string(_pipe@8) end, {ok, Re@1} = case _assert_subject@1 of {ok, _} -> _assert_subject@1; _assert_fail@2 -> erlang:error( #{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@2, module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 53} ) end, _assert_subject@2 = gleam@regex:scan( Re@1, begin _pipe@9 = Rule@1, gleam@string:trim(_pipe@9) end ), [{match, _, [{some, Key}, {some, Val}]}] = case _assert_subject@2 of [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@2; _assert_fail@3 -> erlang:error( #{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@3, module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 54} ) end, case {Key, gleam@dict:get( Field_type_by_name, Field_name@1 ), Check_level} of {<<"gte"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " >= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"min"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " >= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gte"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " >=. "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"min"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " >=. "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gte"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") >= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"min"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") >= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gte"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") >= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"min"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") >= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be greater or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gt"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " > "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be greater than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gt"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " >. "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be greater than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gt"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") > "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be greater than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"gt"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") > "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be greater than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lte"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " <= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"max"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " <= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lte"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " <=. "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"max"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " <=. "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lte"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") <= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"max"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") <= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lte"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") <= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"max"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") <= "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be less or equal than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lt"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " < "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be less than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lt"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " <. "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be less than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lt"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") < "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be less than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"lt"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") < "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be less than "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " == "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " == "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, is_bool}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " == "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, is_string}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " == \""/utf8>>/binary, Val/binary>>/binary, "\" } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be equal to \\\""/utf8>>/binary, Val/binary>>/binary, "\\\"\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") == "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, {is_list, _}}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " == "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should be equal to "/utf8>>/binary, (begin _pipe@10 = Val, gleam@string:replace( _pipe@10, <<"\""/utf8>>, <<"\\\""/utf8>> ) end)/binary>>/binary, "\")) "/utf8>>]; {<<"eq"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") == "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, is_int}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " != "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should not be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, is_float}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " != "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should not be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, is_bool}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " != "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should not be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, is_string}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " != \""/utf8>>/binary, Val/binary>>/binary, "\" } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should not be equal to \\\""/utf8>>/binary, Val/binary>>/binary, "\\\"\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, is_string}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ string.length(x."/utf8, Field_name@1/binary>>/binary, ") != "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should not be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, {is_list, _}}, <<"self"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ x."/utf8, Field_name@1/binary>>/binary, " != "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " should not be equal to "/utf8>>/binary, (begin _pipe@11 = Val, gleam@string:replace( _pipe@11, <<"\""/utf8>>, <<"\\\""/utf8>> ) end)/binary>>/binary, "\")) "/utf8>>]; {<<"ne"/utf8>>, {ok, {is_list, _}}, <<"length"/utf8>>} -> [<<<<<<<<<<<<<<<<<<<<<<<<" use <- bool.guard({ list.length(x."/utf8, Field_name@1/binary>>/binary, ") != "/utf8>>/binary, Val/binary>>/binary, " } |> bool.negate, Error(\""/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, "."/utf8>>/binary, Field_name@1/binary>>/binary, " length should not be equal to "/utf8>>/binary, Val/binary>>/binary, "\")) "/utf8>>]; {Key@1, Typ@1, Check_level@1} -> erlang:error(#{gleam_error => panic, message => (<<<<<<<<<<"Unknown rule for key: "/utf8, Key@1/binary>>/binary, " , type: "/utf8>>/binary, (gleam@string:inspect( Typ@1 ))/binary>>/binary, " , nested check: "/utf8>>/binary, Check_level@1/binary>>), module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 186}) end end ) end )), gleam@string:join(_pipe@12, <<"\n"/utf8>>) end)/binary, "\n Ok(Nil)"/utf8>>, <<<<<<<<<<<<<<<<<>/binary, (justin:snake_case(Record_name))/binary>>/binary, "_valid(x: "/utf8>>/binary, Module_name@1/binary>>/binary, "."/utf8>>/binary, Record_name/binary>>/binary, ") { "/utf8>>/binary, Validation_body/binary>>/binary, " } "/utf8>> end ), Gen_file_path = <<<<"./"/utf8, Root/binary>>/binary, "/glerd_valid_gen.gleam"/utf8>>, _assert_subject@3 = simplifile:write(Gen_file_path, Gen_content), {ok, _} = case _assert_subject@3 of {ok, _} -> _assert_subject@3; _assert_fail@4 -> erlang:error(#{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@4, module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 208}) end, _assert_subject@4 = gleamyshell_ffi:execute( <<"gleam"/utf8>>, <<"."/utf8>>, [<<"format"/utf8>>, Gen_file_path] ), {ok, _} = case _assert_subject@4 of {ok, _} -> _assert_subject@4; _assert_fail@5 -> erlang:error(#{gleam_error => let_assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@5, module => <<"glerd_valid"/utf8>>, function => <<"generate"/utf8>>, line => 210}) end, nil.