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, 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.