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, map0/2, map1/2, map2/2, map3/2, map4/2, map5/2, map6/2, map7/2, map8/2, map9/2, var/1, bind0/2, bind1/2, bind2/2, bind3/2, bind4/2, bind5/2, bind6/2, bind7/2, bind8/2, bind9/2, validate/1, against/2]).
-export_type(['query'/3, test/1]).
-type 'query'(GIP, GIQ, GIR) :: any() | {gleam_phantom, GIP, GIQ, GIR}.
-type test(GIS) :: no_match |
{spec, GIS} |
{invalid, list(gleam@erlang@charlist:charlist())}.
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 11).
-spec new() -> 'query'(any(), any(), any()).
new() ->
lamb_query_erlang_ffi:new().
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 91).
-spec map0('query'(GOH, GOI, fun(() -> GOI)), fun((GOH) -> GOM)) -> 'query'(GOH, GOI, fun((GOH) -> GOM)).
map0(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 99).
-spec map1('query'(GOQ, GOR, fun((GOS) -> GOR)), fun((GOQ, GOS) -> GOW)) -> 'query'(GOQ, GOR, fun((GOQ, GOS) -> GOW)).
map1(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 107).
-spec map2(
'query'(GPA, GPB, fun((GPC, GPD) -> GPB)),
fun((GPA, GPC, GPD) -> GPH)
) -> 'query'(GPA, GPB, fun((GPA, GPC, GPD) -> GPH)).
map2(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 115).
-spec map3(
'query'(GPL, GPM, fun((GPN, GPO, GPP) -> GPM)),
fun((GPL, GPN, GPO, GPP) -> GPT)
) -> 'query'(GPL, GPM, fun((GPL, GPN, GPO, GPP) -> GPT)).
map3(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 123).
-spec map4(
'query'(GPX, GPY, fun((GPZ, GQA, GQB, GQC) -> GPY)),
fun((GPX, GPZ, GQA, GQB, GQC) -> GQG)
) -> 'query'(GPX, GPY, fun((GPX, GPZ, GQA, GQB, GQC) -> GQG)).
map4(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 131).
-spec map5(
'query'(GQK, GQL, fun((GQM, GQN, GQO, GQP, GQQ) -> GQL)),
fun((GQK, GQM, GQN, GQO, GQP, GQQ) -> GQU)
) -> 'query'(GQK, GQL, fun((GQK, GQM, GQN, GQO, GQP, GQQ) -> GQU)).
map5(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 139).
-spec map6(
'query'(GQY, GQZ, fun((GRA, GRB, GRC, GRD, GRE, GRF) -> GQZ)),
fun((GQY, GRA, GRB, GRC, GRD, GRE, GRF) -> GRJ)
) -> 'query'(GQY, GQZ, fun((GQY, GRA, GRB, GRC, GRD, GRE, GRF) -> GRJ)).
map6(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 147).
-spec map7(
'query'(GRN, GRO, fun((GRP, GRQ, GRR, GRS, GRT, GRU, GRV) -> GRO)),
fun((GRN, GRP, GRQ, GRR, GRS, GRT, GRU, GRV) -> GRZ)
) -> 'query'(GRN, GRO, fun((GRN, GRP, GRQ, GRR, GRS, GRT, GRU, GRV) -> GRZ)).
map7(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 155).
-spec map8(
'query'(GSD, GSE, fun((GSF, GSG, GSH, GSI, GSJ, GSK, GSL, GSM) -> GSE)),
fun((GSD, GSF, GSG, GSH, GSI, GSJ, GSK, GSL, GSM) -> GSQ)
) -> 'query'(GSD, GSE, fun((GSD, GSF, GSG, GSH, GSI, GSJ, GSK, GSL, GSM) -> GSQ)).
map8(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 163).
-spec map9(
'query'(GSU, GSV, fun((GSW, GSX, GSY, GSZ, GTA, GTB, GTC, GTD, GTE) -> GSV)),
fun((GSU, GSW, GSX, GSY, GSZ, GTA, GTB, GTC, GTD, GTE) -> GTI)
) -> 'query'(GSU, GSV, fun((GSU, GSW, GSX, GSY, GSZ, GTA, GTB, GTC, GTD, GTE) -> GTI)).
map9(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchbody(Constructor),
_pipe = Query,
lamb_query_erlang_ffi:update_body(_pipe, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 222).
-spec ignore() -> gleam@erlang@atom:atom_().
ignore() ->
erlang:binary_to_atom(<<"_"/utf8>>).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 226).
-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 => 230})
end.
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 83).
-spec bind('query'(GYT, GYU, any()), any()) -> 'query'(GYT, GYU, any()).
bind(Query, Constructor) ->
Shape = lamb_query_erlang_ffi:build_matchhead(Constructor),
_pipe = Query,
_pipe@1 = lamb_query_erlang_ffi:update_head(_pipe, {var(0), Shape}),
lamb_query_erlang_ffi:update_body(_pipe@1, Shape).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 13).
-spec bind0('query'(GIZ, GJA, any()), fun(() -> GJA)) -> 'query'(GIZ, GJA, fun(() -> GJA)).
bind0(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 20).
-spec bind1('query'(GJI, GJJ, any()), fun((GJO) -> GJJ)) -> 'query'(GJI, GJJ, fun((GJO) -> GJJ)).
bind1(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 27).
-spec bind2('query'(GJS, GJT, any()), fun((GJY, GJZ) -> GJT)) -> 'query'(GJS, GJT, fun((GJY, GJZ) -> GJT)).
bind2(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 34).
-spec bind3('query'(GKD, GKE, any()), fun((GKJ, GKK, GKL) -> GKE)) -> 'query'(GKD, GKE, fun((GKJ, GKK, GKL) -> GKE)).
bind3(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 41).
-spec bind4('query'(GKP, GKQ, any()), fun((GKV, GKW, GKX, GKY) -> GKQ)) -> 'query'(GKP, GKQ, fun((GKV, GKW, GKX, GKY) -> GKQ)).
bind4(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 48).
-spec bind5('query'(GLC, GLD, any()), fun((GLI, GLJ, GLK, GLL, GLM) -> GLD)) -> 'query'(GLC, GLD, fun((GLI, GLJ, GLK, GLL, GLM) -> GLD)).
bind5(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 55).
-spec bind6(
'query'(GLQ, GLR, any()),
fun((GLW, GLX, GLY, GLZ, GMA, GMB) -> GLR)
) -> 'query'(GLQ, GLR, fun((GLW, GLX, GLY, GLZ, GMA, GMB) -> GLR)).
bind6(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 62).
-spec bind7(
'query'(GMF, GMG, any()),
fun((GML, GMM, GMN, GMO, GMP, GMQ, GMR) -> GMG)
) -> 'query'(GMF, GMG, fun((GML, GMM, GMN, GMO, GMP, GMQ, GMR) -> GMG)).
bind7(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 69).
-spec bind8(
'query'(GMV, GMW, any()),
fun((GNB, GNC, GND, GNE, GNF, GNG, GNH, GNI) -> GMW)
) -> 'query'(GMV, GMW, fun((GNB, GNC, GND, GNE, GNF, GNG, GNH, GNI) -> GMW)).
bind8(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 76).
-spec bind9(
'query'(GNM, GNN, any()),
fun((GNS, GNT, GNU, GNV, GNW, GNX, GNY, GNZ, GOA) -> GNN)
) -> 'query'(GNM, GNN, fun((GNS, GNT, GNU, GNV, GNW, GNX, GNY, GNZ, GOA) -> GNN)).
bind9(Query, Constructor) ->
bind(Query, Constructor).
-file("/Users/chouzar/Bench/Projects/lamb/src/lamb/query.gleam", 201).
-spec validate('query'(GUL, GUM, GUN)) -> {ok, 'query'(GUL, GUM, GUN)} |
{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", 211).
-spec against('query'(any(), any(), any()), any()) -> {ok, any()} |
{error, list(binary())}.
against(Query, Row) ->
case lamb_query_erlang_ffi:test_query(Query, Row) of
no_match ->
{error, [<<"no match"/utf8>>]};
{spec, Shape} ->
{ok, Shape};
{invalid, Errors} ->
{error, gleam@list:map(Errors, fun unicode:characters_to_binary/1)}
end.