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