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