-module(lamb@query). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([new/0, bind/2, filter/2, map/2, atom/1, ignore/0, var/1, t1/1, t2/2, t3/3, t4/4, t5/5, validate/1, against/2, record/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", 9). -spec new() -> 'query'(any(), any()). new() -> lamb_query_erlang_ffi:new(). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 12). -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", 18). -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", 26). -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", 44). -spec atom(binary()) -> gleam@erlang@atom:atom_(). atom(Name) -> erlang:binary_to_atom(Name). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 31). -spec ignore() -> gleam@erlang@atom:atom_(). ignore() -> erlang:binary_to_atom(<<"_"/utf8>>). -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 35). -spec var(integer()) -> gleam@erlang@atom:atom_(). var(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 => <<"var"/utf8>>, line => 39}) end. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 48). -spec t1(GJR) -> {{GJR}}. t1(A) -> {{A}}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 52). -spec t2(GJT, GJU) -> {{GJT, GJU}}. t2(A, B) -> {{A, B}}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 56). -spec t3(GJW, GJX, GJY) -> {{GJW, GJX, GJY}}. t3(A, B, C) -> {{A, B, C}}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 60). -spec t4(GKA, GKB, GKC, GKD) -> {{GKA, GKB, GKC, GKD}}. t4(A, B, C, D) -> {{A, B, C, D}}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 64). -spec t5(GKF, GKG, GKH, GKI, GKJ) -> {{GKF, GKG, GKH, GKI, GKJ}}. t5(A, B, C, D, E) -> {{A, B, C, D, E}}. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 73). -spec validate('query'(GKN, GKO)) -> {ok, 'query'(GKN, GKO)} | {error, list(binary())}. validate(Query) -> case lamb_query_erlang_ffi:test_query(Query, {ignore()}) 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", 83). -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. -file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 68). -spec record(binary(), any()) -> any(). record(Name, Tuple) -> Tag = atom(Name), lamb_query_erlang_ffi:body_record(Tag, Tuple).