Packages
oaspec
0.8.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@openapi@schema.erl
-module(oaspec@openapi@schema).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/openapi/schema.gleam").
-export([default_metadata/0, make_reference/1, get_metadata/1, get_description/1, is_nullable/1, is_deprecated/1]).
-export_type([schema_metadata/0, schema_object/0, schema_ref/0, discriminator/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type schema_metadata() :: {schema_metadata,
gleam@option:option(binary()),
boolean(),
boolean(),
gleam@option:option(binary()),
boolean(),
boolean(),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(list(binary())),
list(binary())}.
-type schema_object() :: {string_schema,
schema_metadata(),
gleam@option:option(binary()),
list(binary()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(binary())} |
{integer_schema,
schema_metadata(),
gleam@option:option(binary()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(integer())} |
{number_schema,
schema_metadata(),
gleam@option:option(binary()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float())} |
{boolean_schema, schema_metadata()} |
{array_schema,
schema_metadata(),
schema_ref(),
gleam@option:option(integer()),
gleam@option:option(integer()),
boolean()} |
{object_schema,
schema_metadata(),
gleam@dict:dict(binary(), schema_ref()),
list(binary()),
gleam@option:option(schema_ref()),
boolean(),
gleam@option:option(integer()),
gleam@option:option(integer())} |
{all_of_schema, schema_metadata(), list(schema_ref())} |
{one_of_schema,
schema_metadata(),
list(schema_ref()),
gleam@option:option(discriminator())} |
{any_of_schema,
schema_metadata(),
list(schema_ref()),
gleam@option:option(discriminator())}.
-type schema_ref() :: {inline, schema_object()} |
{reference, binary(), binary()}.
-type discriminator() :: {discriminator,
binary(),
gleam@dict:dict(binary(), binary())}.
-file("src/oaspec/openapi/schema.gleam", 26).
?DOC(" Create default metadata with no description, not nullable, not deprecated.\n").
-spec default_metadata() -> schema_metadata().
default_metadata() ->
{schema_metadata,
none,
false,
false,
none,
false,
false,
none,
none,
none,
none,
[]}.
-file("src/oaspec/openapi/schema.gleam", 118).
?DOC(
" Extract the schema name from a $ref string (last path segment).\n"
" Example: \"#/components/schemas/User\" -> \"User\"\n"
).
-spec ref_to_schema_name(binary()) -> binary().
ref_to_schema_name(Ref) ->
case gleam@string:split(Ref, <<"/"/utf8>>) of
[] ->
<<"Unknown"/utf8>>;
Segments ->
case gleam@list:last(Segments) of
{ok, Name} ->
Name;
{error, _} ->
<<"Unknown"/utf8>>
end
end.
-file("src/oaspec/openapi/schema.gleam", 111).
?DOC(" Create a Reference from a $ref string, auto-extracting the name.\n").
-spec make_reference(binary()) -> schema_ref().
make_reference(Ref) ->
Name = ref_to_schema_name(Ref),
{reference, Ref, Name}.
-file("src/oaspec/openapi/schema.gleam", 151).
?DOC(" Extract the shared metadata from any schema variant.\n").
-spec get_metadata(schema_object()) -> schema_metadata().
get_metadata(Schema) ->
case Schema of
{string_schema, Metadata, _, _, _, _, _} ->
Metadata;
{integer_schema, Metadata@1, _, _, _, _, _, _} ->
Metadata@1;
{number_schema, Metadata@2, _, _, _, _, _, _} ->
Metadata@2;
{boolean_schema, Metadata@3} ->
Metadata@3;
{array_schema, Metadata@4, _, _, _, _} ->
Metadata@4;
{object_schema, Metadata@5, _, _, _, _, _, _} ->
Metadata@5;
{all_of_schema, Metadata@6, _} ->
Metadata@6;
{one_of_schema, Metadata@7, _, _} ->
Metadata@7;
{any_of_schema, Metadata@8, _, _} ->
Metadata@8
end.
-file("src/oaspec/openapi/schema.gleam", 136).
?DOC(" Get the description from any schema object.\n").
-spec get_description(schema_object()) -> gleam@option:option(binary()).
get_description(Schema) ->
erlang:element(2, get_metadata(Schema)).
-file("src/oaspec/openapi/schema.gleam", 141).
?DOC(" Check if a schema is nullable.\n").
-spec is_nullable(schema_object()) -> boolean().
is_nullable(Schema) ->
erlang:element(3, get_metadata(Schema)).
-file("src/oaspec/openapi/schema.gleam", 146).
?DOC(" Check if a schema is deprecated.\n").
-spec is_deprecated(schema_object()) -> boolean().
is_deprecated(Schema) ->
erlang:element(4, get_metadata(Schema)).