Current section

Files

Jump to
lamb src lamb@query.erl
Raw

src/lamb@query.erl

-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, t1/1, t2/2, t3/3, t4/4, t5/5, validate/1, against/2, r/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", 31).
-spec i() -> gleam@erlang@atom:atom_().
i() ->
erlang:binary_to_atom(<<"_"/utf8>>).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 35).
-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 => 39})
end.
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 44).
-spec a(binary()) -> gleam@erlang@atom:atom_().
a(Name) ->
erlang:binary_to_atom(Name).
-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, {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", 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 r(binary(), any()) -> any().
r(Name, Tuple) ->
Tag = a(Name),
lamb_query_erlang_ffi:body_record(Tag, Tuple).