-module(lamb@query). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([new/0, bind/2, filter/2, map/2, i/0, v/1, a/1, validate/1, against/2]). -export_type(['query'/2, test/1]). -type 'query'(GIP, GIQ) :: any() | {gleam_phantom, GIP, GIQ}. -type test(GIR) :: no_match | {spec, GIR} | {invalid, list(gleam@erlang@charlist:charlist())}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 10). -spec new() -> 'query'(any(), any()). new() -> lamb_query_erlang_ffi:new(). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 13). -spec bind('query'(GIW, GIX), any()) -> 'query'(GIW, GIX). bind(Query, Shape) -> lamb_query_erlang_ffi:update_head(Query, Shape). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 19). -spec filter('query'(GJD, GJE), any()) -> 'query'(GJD, GJE). filter(Query, Condition) -> lamb_query_erlang_ffi:update_condition(Query, Condition). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 27). -spec map('query'(GJK, GJL), any()) -> 'query'(GJK, GJL). map(Query, Shape) -> lamb_query_erlang_ffi:update_body(Query, Shape). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 32). -spec i() -> gleam@erlang@atom:atom_(). i() -> erlang:binary_to_atom(<<"_"/utf8>>). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 36). -spec v(integer()) -> gleam@erlang@atom:atom_(). v(Position) -> case Position of N when (N >= 0) andalso (N =< 100000000) -> erlang:binary_to_atom(<<"$"/utf8, (gleam@int:to_string(N))/binary>>); _ -> erlang:error(#{gleam_error => panic, message => <<"can only specify a variable between 0 and 100_000_000"/utf8>>, module => <<"lamb/query"/utf8>>, function => <<"v"/utf8>>, line => 40}) end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 44). -spec a(binary()) -> gleam@erlang@atom:atom_(). a(Name) -> Name@1 = gleam@string:lowercase(Name), erlang:binary_to_atom(Name@1). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 49). -spec validate('query'(GJR, GJS)) -> {ok, 'query'(GJR, GJS)} | {error, list(binary())}. validate(Query) -> case lamb_query_erlang_ffi:test_query(Query, {i()}) of no_match -> {ok, Query}; {spec, _} -> {ok, Query}; {invalid, Errors} -> {error, gleam@list:map(Errors, fun unicode:characters_to_binary/1)} end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 59). -spec against('query'(any(), any()), any()) -> {ok, any()} | {error, nil}. against(Query, Row) -> case lamb_query_erlang_ffi:test_query(Query, Row) of no_match -> {error, nil}; {spec, Shape} -> {ok, Shape}; {invalid, _} -> {error, nil} end.