Packages
oaspec
0.22.0
0.68.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.59.0
0.58.1
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.3
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.1.3
Generate Gleam code from OpenAPI 3.x specifications
Current section
Files
Jump to
Current section
Files
src/oaspec@codegen@operation_ir.erl
-module(oaspec@codegen@operation_ir).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/codegen/operation_ir.gleam").
-export([effective_explode/1, delimiter_for_style/1, is_deep_object_param/2]).
-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/oaspec/codegen/operation_ir.gleam", 10).
?DOC(
" Compute the effective explode value for a parameter.\n"
" OpenAPI 3.x default: true for form/deepObject style, false otherwise.\n"
" When style is None (on a query parameter), the default is form → true.\n"
).
-spec effective_explode(
oaspec@openapi@spec:parameter(oaspec@openapi@spec:resolved())
) -> boolean().
effective_explode(Param) ->
case erlang:element(8, Param) of
{some, V} ->
V;
none ->
case erlang:element(7, Param) of
{some, form_style} ->
true;
{some, deep_object_style} ->
true;
none ->
true;
_ ->
false
end
end.
-file("src/oaspec/codegen/operation_ir.gleam", 23).
?DOC(
" Return the delimiter character for a parameter style.\n"
" pipeDelimited → \"|\", spaceDelimited → \" \", all others → \",\"\n"
).
-spec delimiter_for_style(
gleam@option:option(oaspec@openapi@spec:parameter_style())
) -> binary().
delimiter_for_style(Style) ->
case Style of
{some, pipe_delimited_style} ->
<<"|"/utf8>>;
{some, space_delimited_style} ->
<<" "/utf8>>;
_ ->
<<","/utf8>>
end.
-file("src/oaspec/codegen/operation_ir.gleam", 33).
?DOC(
" Check if a parameter uses deepObject serialization.\n"
" True when: in=query, style=deepObject, and schema is an ObjectSchema.\n"
).
-spec is_deep_object_param(
oaspec@openapi@spec:parameter(oaspec@openapi@spec:resolved()),
oaspec@codegen@context:context()
) -> boolean().
is_deep_object_param(Param, Ctx) ->
case {erlang:element(3, Param),
erlang:element(7, Param),
oaspec@openapi@spec:parameter_schema(Param)} of
{in_query,
{some, deep_object_style},
{some, {reference, _, _} = Schema_ref}} ->
case oaspec@openapi@resolver:resolve_schema_ref(
Schema_ref,
oaspec@codegen@context:spec(Ctx)
) of
{ok, {object_schema, _, _, _, _, _, _}} ->
true;
_ ->
false
end;
{in_query,
{some, deep_object_style},
{some, {inline, {object_schema, _, _, _, _, _, _}}}} ->
true;
{_, _, _} ->
false
end.