Current section

Files

Jump to
caffeine_lang src caffeine_lang@phase_1@parser@specification@unresolved_query_template_specification.erl
Raw

src/caffeine_lang@phase_1@parser@specification@unresolved_query_template_specification.erl

-module(caffeine_lang@phase_1@parser@specification@unresolved_query_template_specification).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/phase_1/parser/specification/unresolved_query_template_specification.gleam").
-export([parse_unresolved_query_template_types_specification/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/phase_1/parser/specification/unresolved_query_template_specification.gleam", 23).
?DOC(" Parses a single unresolved query template type.\n").
-spec parse_query_template_type(
glaml:node_(),
gleam@dict:dict(binary(), binary())
) -> {ok,
caffeine_lang@types@unresolved@unresolved_query_template_type:query_template_type()} |
{error, binary()}.
parse_query_template_type(Type_node, _) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_from_node(
Type_node,
<<"name"/utf8>>
),
fun(Name) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_list_from_node(
Type_node,
<<"specification_of_query_templates"/utf8>>
),
fun(Specification_of_query_templates) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_from_node(
Type_node,
<<"query"/utf8>>
),
fun(Query_string) ->
gleam@result:'try'(case Query_string of
<<""/utf8>> ->
{error,
<<"Empty query string is not allowed"/utf8>>};
_ ->
{ok, Query_string}
end, fun(Query_string@1) ->
gleam@result:'try'(
caffeine_lang@cql@parser:parse_expr(
Query_string@1
),
fun(Query) ->
{ok,
{query_template_type,
Name,
Specification_of_query_templates,
Query}}
end
)
end)
end
)
end
)
end
).
-file("src/caffeine_lang/phase_1/parser/specification/unresolved_query_template_specification.gleam", 10).
?DOC(" Given a specification file, returns a list of unresolved query template types.\n").
-spec parse_unresolved_query_template_types_specification(binary()) -> {ok,
list(caffeine_lang@types@unresolved@unresolved_query_template_type:query_template_type())} |
{error, binary()}.
parse_unresolved_query_template_types_specification(File_path) ->
caffeine_lang@phase_1@parser@utils@glaml_helpers:parse_specification(
File_path,
maps:new(),
fun parse_query_template_type/2,
<<"query_template_types"/utf8>>
).